Submission #715370

#TimeUsernameProblemLanguageResultExecution timeMemory
715370Ahmed57Hiring (IOI09_hiring)C++14
100 / 100
1232 ms63400 KiB
#include <bits/stdc++.h> using namespace std; signed main(){ long long n; long long w; cin>>n>>w; vector<pair<long double,pair<long double,long long>>> v; for(int i = 0;i<n;i++){ long double s,q;cin>>s>>q; v.push_back({s/q,{q,i+1}}); } sort(v.begin(),v.end()); priority_queue<pair<long double,int>> q,p; long double sum = 0; long long ma = 0,ind = -1; long double su = 0.0; for(int i = 0;i<v.size();i++){ p.push({-v[i].second.first,v[i].second.second}); sum+=(-p.top().first); q.push({-p.top().first,p.top().second}); p.pop(); long double no =sum*v[i].first; while(no>w){ pair<long double,int>pa = q.top(); q.pop(); sum-=pa.first; p.push({-pa.first,pa.second}); no =sum*v[i].first; } if(q.size()>ma){ ma=q.size(); ind = i; su = no; }if(q.size()==ma&&su>no){ su = no;ind =i; } } while(!q.empty())q.pop(); while(!p.empty())p.pop(); sum=0; for(int i = 0;i<=ind;i++){ p.push({-v[i].second.first,v[i].second.second}); sum+=(-p.top().first); q.push({-p.top().first,p.top().second}); p.pop(); long double no =sum*v[i].first; while(no>w){ pair<long double,int>pa = q.top(); q.pop(); sum-=pa.first; p.push({-pa.first,pa.second}); no =sum*v[i].first; } } cout<<q.size()<<endl; while(q.size()){ cout<<q.top().second<<"\n"; q.pop(); } }

Compilation message (stderr)

hiring.cpp: In function 'int main()':
hiring.cpp:19:20: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<std::pair<long double, std::pair<long double, long long int> > >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   19 |     for(int i = 0;i<v.size();i++){
      |                   ~^~~~~~~~~
hiring.cpp:32:20: warning: comparison of integer expressions of different signedness: 'std::priority_queue<std::pair<long double, int> >::size_type' {aka 'long unsigned int'} and 'long long int' [-Wsign-compare]
   32 |         if(q.size()>ma){
      |            ~~~~~~~~^~~
hiring.cpp:36:21: warning: comparison of integer expressions of different signedness: 'std::priority_queue<std::pair<long double, int> >::size_type' {aka 'long unsigned int'} and 'long long int' [-Wsign-compare]
   36 |         }if(q.size()==ma&&su>no){
      |             ~~~~~~~~^~~~
#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...