Submission #798184

#TimeUsernameProblemLanguageResultExecution timeMemory
798184LiudasDetecting Molecules (IOI16_molecules)C++17
31 / 100
1071 ms1356 KiB
#include <bits/stdc++.h>

using namespace std;
vector<int> find_subset(int L, int R, vector<int> M){
    map<int, queue<int>> places;
    int N = M.size();
    for(int i = 0; i < N; i ++){
        places[M[i]].push(i);
    }
    map<int, int> sums;
    sums[0] = 0;
    for(int i = 0; i < N; i ++){
        map<int, int> sums1;
        for(auto [l ,r] : sums){
            sums1[l + M[i]] = i;
        }
        for(auto [l, r] : sums1){
            if(sums.find(l) == sums.end()  && l <= R)
            sums[l] = r;
        }
    }
    vector<int> p;
    for(int i = L; i <= R; i ++){
        if(sums.find(i) != sums.end()){
            int t = i;
            while(t){
                p.push_back(sums[t]);
                t -= M[sums[t]];
            }
            return p;
        }
    }
    return p;
}
#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...