Submission #491967

#TimeUsernameProblemLanguageResultExecution timeMemory
491967lorenzoferrariDetecting Molecules (IOI16_molecules)C++14
100 / 100
153 ms12132 KiB
#include <bits/stdc++.h> #pragma GCC optimize ("O3") using namespace std; using ll = long long; vector<int> find_subset(int l, int u, vector<int> w) { int n = w.size(); vector<int> r; multiset<ll> m; for (int i = 0; i < n; ++i) m.insert(w[i]); if (*m.begin() > u) return r; ll sum = 0; multiset<ll> ans; while (!m.empty() && sum < l) { auto it = m.end(); --it; sum += *it; ans.insert(*it); m.erase(it); } if (sum < l) return r; { int sos = ans.size(); ll ses = 0; auto sas = w; sort(sas.begin(), sas.end()); while (sos--) ses += sas[sos]; if (ses > u) return {}; } while (sum > u) { auto a = m.begin(); auto b = ans.end(); --b; ll aa = *a; ll bb = *b; m.erase(a); ans.erase(b); sum += aa - bb; m.insert(bb); ans.insert(aa); } for (int i = 0; i < n; ++i) { auto it = ans.find(w[i]); if (it != ans.end()) { ans.erase(it); r.push_back(i); } } return r; }
#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...