제출 #715345

#제출 시각아이디문제언어결과실행 시간메모리
715345Ahmed57Hiring (IOI09_hiring)C++14
73 / 100
851 ms32584 KiB
#include <bits/stdc++.h> #pragma GCC optimize("Ofast,no-stack-protector,unroll-loops,fast-math,O3") using namespace std; signed main(){ long long n,w; cin>>n>>w; vector<pair<double,pair<double,int>>> v; for(int i = 0;i<n;i++){ double s,q;cin>>s>>q; v.push_back({s/q,{q,i+1}}); } sort(v.begin(),v.end()); priority_queue<pair<double,int>> q,p; double sum = 0; int ma = 0,ind; 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(); double no =sum*v[i].first; while(no>w){ pair<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; } } 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(); double no =sum*v[i].first; while(no>w){ pair<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(); } }

컴파일 시 표준 에러 (stderr) 메시지

hiring.cpp: In function 'int main()':
hiring.cpp:18:20: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<std::pair<double, std::pair<double, int> > >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   18 |     for(int i = 0;i<v.size();i++){
      |                   ~^~~~~~~~~
hiring.cpp:31:20: warning: comparison of integer expressions of different signedness: 'std::priority_queue<std::pair<double, int> >::size_type' {aka 'long unsigned int'} and 'int' [-Wsign-compare]
   31 |         if(q.size()>=ma){
      |            ~~~~~~~~^~~~
hiring.cpp:39:20: warning: 'ind' may be used uninitialized in this function [-Wmaybe-uninitialized]
   39 |     for(int i = 0;i<=ind;i++){
      |                   ~^~~~~
#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...