Submission #586006

#TimeUsernameProblemLanguageResultExecution timeMemory
586006Valters07Detecting Molecules (IOI16_molecules)C++14
100 / 100
52 ms8620 KiB
#include <bits/stdc++.h> #include "molecules.h" #pragma GCC optimize("O2,unroll-loops") #define fio ios_base::sync_with_stdio(0);cin.tie(0); #define ll long long #define en cin.close();return 0; #define pb push_back #define fi first//printf("%lli\n",cur); #define se second//scanf("%lli",&n); #define r0 return 0; using namespace std; mt19937 rng(chrono::steady_clock::now().time_since_epoch().count()); vector<int> find_subset(int l, int u, vector<int> inp) { int n = inp.size(); ll pf[n], sf[n]; vector<pair<int,int> > w(n); for(int i = 0;i<n;i++) w[i]={inp[i],i}; sort(w.begin(),w.end()); for(int i = 0;i<n;i++) pf[i]=(i>0?pf[i-1]:0)+w[i].fi, sf[n-i-1]=(i>0?sf[n-i]:0)+w[n-i-1].fi; if(pf[n-1]<l||u<pf[0]) return {}; for(int i = 0;i<n;i++) { if(l<=pf[i]&&pf[i]<=u) { vector<int> ret; for(int j = 0;j<=i;j++) ret.pb(w[j].se); return ret; } } int k = 1; while(k<n&&pf[k]<l) k++; if(sf[n-k]<l) return {}; vector<int> ans(k); for(int i = 0;i<k;i++) ans[i]=w[i].se; ll cur = pf[k-1]; for(int i = 0;cur<l;i++) cur-=w[i].fi, cur+=w[n-i-1].fi, ans[i]=w[n-i-1].se; sort(ans.begin(),ans.end());//style points 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...