Submission #170428

#TimeUsernameProblemLanguageResultExecution timeMemory
170428AlexLuchianovDetecting Molecules (IOI16_molecules)C++14
100 / 100
85 ms6520 KiB
#include "molecules.h" #include <algorithm> using ll = long long; int const nmax = 200000; int v[1 + nmax]; int seen[1 + nmax], ind[1 + nmax]; bool compare(int x, int y){ return v[x] < v[y]; } std::vector<int> find_subset(int l, int u, std::vector<int> w) { std::vector<int> sol; int n = w.size(); for(int i = 0; i < n; i++) v[i] = w[i]; for(int i = 0; i < n; i++) ind[i] = i; std::sort(ind, ind + n, compare); ll sum1 = 0, sum2 = 0; for(int i = 0; i < n; i++){ int pos1 = ind[i], pos2 = ind[n - 1 - i]; seen[pos1] = 1; sum1 += w[pos1]; sum2 += w[pos2]; if(sum1 <= u && l <= sum2){ int ptr = 0; while(sum1 < l){ seen[ind[ptr]] = 0; seen[ind[n - 1 - ptr]] = 1; sum1 -= w[ind[ptr]]; sum1 += w[ind[n - 1 - ptr]]; ptr++; } for(int i = 0; i < n; i++) if(seen[i] == 1) sol.push_back(i); return sol; } } return sol; }
#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...