제출 #415266

#제출 시각아이디문제언어결과실행 시간메모리
415266AntekbHiring (IOI09_hiring)C++14
60 / 100
976 ms31988 KiB
#include<bits/stdc++.h> #define st first #define nd second using namespace std; typedef long double ld; int main(){ int n, w; cin>>n>>w; vector<pair<ld, pair<int, int> > > V; for(int i=0; i<n; i++){ int a, b; cin>>a>>b; V.push_back({a/ld(b), {b, i}}); } sort(V.begin(), V.end()); set<pair<int, int> > S; long long sum=0; int l=0; for(int i=0; i<n; i++){ S.insert(V[i].nd); sum+=V[i].nd.st; /*while(S.size()&& S2.size() && *S2.begin()<*S.crbegin()){ sum-=(*S.crbegin()).st; sum+=(*S.crbegin()).st; S.insert(*S2.begin()); S2.erase(*S2.begin()); }*/ while(S.size() && sum>w/V[i].st){ sum-=(*S.crbegin()).st; S.erase(S.find(*S.crbegin())); } l=max(l, (int)S.size()); } cout<<l<<"\n"; S.clear(); sum=0; for(int i=0; i<n; i++){ S.insert(V[i].nd); sum+=V[i].nd.st; while(S.size() && sum>w/V[i].st){ sum-=(*S.crbegin()).st; S.erase(S.find(*S.crbegin())); } if(S.size()==l){ for(auto i:S)cout<<i.nd+1<<"\n"; return 0; } } }

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

hiring.cpp: In function 'int main()':
hiring.cpp:45:20: warning: comparison of integer expressions of different signedness: 'std::set<std::pair<int, int> >::size_type' {aka 'long unsigned int'} and 'int' [-Wsign-compare]
   45 |         if(S.size()==l){
      |            ~~~~~~~~^~~
#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...