Submission #302360

#TimeUsernameProblemLanguageResultExecution timeMemory
302360ElyesChaabouniHiring (IOI09_hiring)C++14
50 / 100
812 ms18268 KiB
#include <bits/stdc++.h> #define MOD 998244353 using namespace std; bool compare(pair<int, int>a, pair<int, int>b) { return a.first*b.second < a.second*b.first; } int main() { //freopen("input.txt", "r", stdin); //freopen("output.txt", "w", stdout); long long n, w; cin >> n >> w; vector<pair<long long, long long> >v; for(int i = 0; i < n; i++) { int x, y; cin >> x >> y; v.push_back(make_pair(x, y)); } sort(v.begin(), v.end(), compare); priority_queue<pair<int, int> >pq; long long sum=0; long long ma=0, idx=0, ma_v_s=0, ma_v_q=0; for(int i = 0; i < n; i++) { sum+=v[i].second; pq.push(make_pair(v[i].second, i)); while(sum*v[i].first > w*v[i].second && !pq.empty()) { sum-=pq.top().first; pq.pop(); } if(pq.size() > ma) { ma=pq.size(); idx=i; ma_v_s=v[i].first*sum; ma_v_q=v[i].second; } else if(pq.size() == ma && ma_v_s*v[i].second > ma_v_q*v[i].first*sum) { idx=i; ma_v_s=v[i].first*sum; ma_v_q=v[i].second; } } while(!pq.empty()) pq.pop(); sum=0; for(int i = 0; i <= idx; i++) { sum+=v[i].second; pq.push(make_pair(v[i].second, i)); while(sum*v[i].first > w*v[i].second && !!pq.empty()) { sum-=pq.top().first; pq.pop(); } } cout << ma << '\n'; while(!pq.empty()) { cout << pq.top().second+1 << '\n'; pq.pop(); } }

Compilation message (stderr)

hiring.cpp: In function 'int main()':
hiring.cpp:36:16: warning: comparison of integer expressions of different signedness: 'std::priority_queue<std::pair<int, int> >::size_type' {aka 'long unsigned int'} and 'long long int' [-Wsign-compare]
   36 |   if(pq.size() > ma)
      |      ~~~~~~~~~~^~~~
hiring.cpp:43:21: warning: comparison of integer expressions of different signedness: 'std::priority_queue<std::pair<int, int> >::size_type' {aka 'long unsigned int'} and 'long long int' [-Wsign-compare]
   43 |   else if(pq.size() == ma && ma_v_s*v[i].second > ma_v_q*v[i].first*sum)
      |           ~~~~~~~~~~^~~~~
#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...