Submission #302416

#TimeUsernameProblemLanguageResultExecution timeMemory
302416NucleistHiring (IOI09_hiring)C++14
50 / 100
1452 ms40692 KiB
#include <bits/stdc++.h> using namespace std; #define all(x) x.begin(),x.end() #define pb push_back #define debug(x) cerr << " " << x << " " << #x << endl; int main(){ long long nb,w; cin>>nb>>w; vector<pair<long double,long long>>g; vector<long long>k1,k2; for (long long i = 0; i < nb; ++i) { long double s,q; cin>>s>>q; g.pb({s/q,i}); k1.pb(s); k2.pb(q); } sort(all(g)); priority_queue<pair<long double,long long>>g2; long double cur=0; pair<int,int> ans={0,0}; for (long long i = 0; i < nb; ++i) { g2.push({k2[g[i].second],i}); if(i){ cur/=(g[i-1].first); } cur*=g[i].first; cur+=k1[g[i].second]; while(!(g2.empty()) && cur>w){ cur-=((g2.top().first)*g[i].first); g2.pop(); } ans=max(ans,{(int)(g2.size()),i}); } cout<<ans.first<<'\n'; while(!(g2.empty())) { g2.pop(); } cur=0; for (long long i = 0; i <= ans.second; ++i) { g2.push({k2[g[i].second],i}); if(i){ cur/=(g[i-1].first); } cur*=g[i].first; cur+=k1[g[i].second]; while(!(g2.empty()) && cur>w){ cur-=((g2.top().first)*g[i].first); g2.pop(); } } while(!(g2.empty())) { cout<<g2.top().second+1<<'\n'; g2.pop(); } return 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...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...