Submission #419263

#TimeUsernameProblemLanguageResultExecution timeMemory
419263someoneDetecting Molecules (IOI16_molecules)C++14
100 / 100
55 ms7636 KiB
#include <bits/stdc++.h> #include "molecules.h" using ll = long long; //using namespace std; struct Molecule { ll val, i; }; std::vector<int> find_subset(int l, int u, std::vector<int> w) { std::vector<Molecule> mol; int n = w.size(); ll sum[n+1]; sum[0] = 0; for(int i = 0; i < n; i++) mol.push_back({w[i], i}); std::sort(mol.begin(), mol.end(), [](Molecule a, Molecule b) { return a.val < b.val; }); for(int i = 0; i < n; i++) sum[i+1] = sum[i] + mol[i].val; std::vector<int> ans; bool hasAnswer = false; for(int i = 1; i <= n && !hasAnswer; i++) { ll mini = sum[i], maxi = sum[n] - sum[n-i]; if(mini <= u && l <= maxi) { for(int deb = 0, fin = i; fin <= n && !hasAnswer; deb++, fin++) { int s = sum[fin] - sum[deb]; if((ll)l <= s && s <= (ll)u) { hasAnswer = true; for(int j = deb; j < fin; j++) ans.push_back(mol[j].i); } } } } 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...