제출 #307283

#제출 시각아이디문제언어결과실행 시간메모리
307283mihai145Detecting Molecules (IOI16_molecules)C++14
100 / 100
62 ms6252 KiB
#include "molecules.h"

#include <vector>
#include <algorithm>

std::vector<int> find_subset(int l, int u, std::vector<int> w) {
    std::vector<std::pair<int,int>> ww;
    for(int i = 0; i < (int)w.size(); i++)
        ww.push_back({w[i], i});

    sort(ww.begin(), ww.end());

    int lf = 0, r = -1;
    long long currentSum = 0;

    int sol_l = -1, sol_r = -1;

    while(true)
        {
            if(currentSum < l)
                {
                    if(r >= (int)ww.size() - 1)
                        break;

                    currentSum += ww[++r].first;
                }

            if(currentSum > u)
                currentSum -= ww[lf++].first;

            if(currentSum >= l && currentSum <= u)
                {
                    sol_l = lf;
                    sol_r = r;
                    break;
                }
        }

    std::vector<int> ans;

    if(sol_l == -1)
        return ans;

    for(int i = sol_l; i <= sol_r; i++)
        ans.push_back(ww[i].second);

    return ans;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...