Submission #591394

#TimeUsernameProblemLanguageResultExecution timeMemory
591394yutabiDetecting Molecules (IOI16_molecules)C++14
100 / 100
71 ms6300 KiB
#include "molecules.h" #include <bits/stdc++.h> using namespace std; #define pb push_back typedef long long ll; typedef pair <int,int> ii; std::vector<int> find_subset(int l, int u, std::vector<int> s) { int n=s.size(); vector <ii> w; for(int i=0;i<n;i++) { w.pb(ii(s[i],i)); } set <int> ans; ll L=0; ll R=0; sort(w.begin(),w.end()); int ans_size=-1; for(int i=0;i<n;i++) { L+=w[i].first; R+=w[n-i-1].first; if(L<=u && l<=R) { ans_size=i+1; } //printf("%lld %lld %d %d\n",L,R,l,u); } if(ans_size==-1) { return std::vector<int>(0); } ll sum=0; for(int i=0;i<ans_size;i++) { ans.insert(w[i].second); sum+=w[i].first; } for(int i=ans_size;i<n;i++) { if(l<=sum && sum<=u) { break; } ans.erase(w[i-ans_size].second); sum-=w[i-ans_size].first; ans.insert(w[n-(i-ans_size)-1].second); sum+=w[n-(i-ans_size)-1].first; } vector <int> fnl; for(set <int>::iterator it=ans.begin();it!=ans.end();it++) { fnl.pb(*it); } return fnl; }
#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...