제출 #1006639

#제출 시각아이디문제언어결과실행 시간메모리
1006639huutuanHiring (IOI09_hiring)C++14
29 / 100
250 ms23964 KiB
#include <bits/stdc++.h> using namespace std; #define int long long const int N=5e5+10; int n, w, s[N], q[N], mq[N], id[N]; int32_t main(){ // auto start=clock(); ios_base::sync_with_stdio(false); cin.tie(nullptr); cin >> n >> w; for (int i=1; i<=n; ++i){ cin >> s[i] >> q[i]; mq[i]=w*q[i]/s[i]; } iota(id, id+n+1, 0); sort(id+1, id+n+1, [&](int x, int y){ return mq[x]>mq[y]; }); int ans=0; { priority_queue<int> pq; int sum=0; for (int _i=1; _i<=n; ++_i){ int i=id[_i]; pq.push(q[i]); sum+=q[i]; while (sum>mq[i]){ sum-=pq.top(); pq.pop(); } ans=max(ans, (int)pq.size()); } } int l=max(1ll, w-1000), r=w; // while (l<=r){ // int mid=(l+r)/2; // for (int i=1; i<=n; ++i){ // mq[i]=mid*q[i]/s[i]; // } // iota(id, id+n+1, 0); // sort(id+1, id+n+1, [&](int x, int y){ // return mq[x]>mq[y]; // }); // int cur=0; // { // priority_queue<int> pq; int sum=0; // for (int _i=1; _i<=n; ++_i){ // int i=id[_i]; // pq.push(q[i]); sum+=q[i]; // while (sum>mq[i]){ // sum-=pq.top(); // pq.pop(); // } // cur=max(cur, (int)pq.size()); // } // } // if (cur==ans) r=mid-1; // else l=mid+1; // } for (int i=1; i<=n; ++i){ mq[i]=l*q[i]/s[i]; } iota(id, id+n+1, 0); sort(id+1, id+n+1, [&](int x, int y){ return mq[x]>mq[y]; }); { priority_queue<pair<int, int>> pq; int sum=0; for (int _i=1; _i<=n; ++_i){ int i=id[_i]; pq.emplace(q[i], i); sum+=q[i]; while (sum>mq[i]){ sum-=pq.top().first; pq.pop(); } if ((int)pq.size()==ans){ cout << ans << '\n'; while (pq.size()){ cout << pq.top().second << '\n'; pq.pop(); } return 0; } } } return 0; }

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

hiring.cpp: In function 'int32_t main()':
hiring.cpp:36:28: warning: unused variable 'r' [-Wunused-variable]
   36 |    int l=max(1ll, w-1000), r=w;
      |                            ^
#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...