Submission #302380

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

Compilation message (stderr)

hiring.cpp: In function 'int main()':
hiring.cpp:38: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]
   38 |   if(pq.size() > ma)
      |      ~~~~~~~~~~^~~~
hiring.cpp:45: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]
   45 |   else if(pq.size() == ma && ma_v_s*v[i].first.second > ma_v_q*v[i].first.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...