Submission #283137

#TimeUsernameProblemLanguageResultExecution timeMemory
283137sofapudenDetecting Molecules (IOI16_molecules)C++14
100 / 100
69 ms7160 KiB
#include <bits/stdc++.h> #include "molecules.h" using namespace std; typedef long long ll; vector<int> find_subset(int l, int u, vector<int> w) { ll n = w.size(); ll l2 = l; ll u2 = u; vector<pair<ll,int>> v(n); vector<int> out; ll sum = 0LL; for(int i = 0; i < n; ++i){ sum+=(ll)w[i]; if(sum > u2)break; } if(sum <= u2 && sum >= l2){ out.resize(n); iota(out.begin(),out.end(),0); return out; } for(int i = 0; i < n; ++i){ v[i].first = (ll)w[i]; v[i].second = i; } sort(v.begin(), v.end()); ll le = 0, ri = n-1; sum = v[n-1].first; while(sum < l2 && le < ri){ sum+=v[--ri].first; } while(sum > u2 && le < ri && le < n-ri){ sum-=v[n-le-1].first; sum+=v[le].first; le++; } if(sum <= u2 && sum >= l2){ for(int i = 0; i < le; ++i){ out.push_back(v[i].second); } for(int i = n-1-le; i>= ri; --i){ out.push_back(v[i].second); } return out; } return vector<int>(0); }
#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...