Submission #416563

#TimeUsernameProblemLanguageResultExecution timeMemory
416563amunduzbaevDetecting Molecules (IOI16_molecules)C++14
9 / 100
1 ms204 KiB
#include "bits/stdc++.h" #include "molecules.h" #ifndef EVAL #include "grader.cpp" #endif using namespace std; #define ff first #define ss second vector<int> find_subset(int l, int u, vector<int> w) { int n; n = (int)w.size(); vector<pair<int, int>> tt; for(int i=0;i<n;i++) tt.push_back({w[i], i}); sort(tt.begin(), tt.end()); for(int i=0;i<n;i++){ if(l <= tt[i].ff && tt[i].ff <= u) return {tt[i].ss}; } if(w[0] > u) return {}; int gap = u - l, in = -1, in2 = -1; for(int i=0;i<n;i++){ if(w[i] <= l) in = i; if(w[i] <= gap) in2 = i; } assert(~in); int sum = 0; vector<int> res; while(in >= 0 && sum + tt[in].ff <= u) res.push_back(tt[in].ss), sum += tt[in].ff, in--; in = min(in, in2); if(l <= sum && sum <= u) return res; while(in >= 0 && sum + tt[in].ff <= u) res.push_back(tt[in].ss), sum += tt[in].ff, in--; if(l <= sum && sum <= u) return res; return {}; }
#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...