제출 #442869

#제출 시각아이디문제언어결과실행 시간메모리
442869dutchHiring (IOI09_hiring)C++17
70 / 100
473 ms30456 KiB
#include <bits/stdc++.h> using namespace std; #define int long long int n, w, j; array<int, 2> res, s, c; signed main(){ cin.tie(0)->sync_with_stdio(0); cin >> n >> w; array<int, 4> a[n]; for(auto &i : a){ cin >> i[1] >> i[2]; i[0] = (w * i[2]) / -i[1]; i[3] = ++j; } sort(a, a+n); priority_queue<array<int, 3>> q, r; for(auto &i : a){ q.push({i[2], i[1], i[3]}); s[0] += i[2]; s[1] += i[1]; while(s[0] > -i[0]){ s[0] -= q.top()[0]; s[1] -= q.top()[1]; q.pop(); } res = max(res, {(int)q.size(), -s[1]}); } vector<int> ans = {res[0]}; s = {0, 0}; for(auto &i : a){ r.push({i[2], i[1], i[3]}); s[0] += i[2]; s[1] += i[1]; while(s[0] > -i[0]){ s[0] -= r.top()[0]; s[1] -= r.top()[1]; r.pop(); } if((c = {(int)r.size(), -s[1]}) == res){ while(!r.empty()) ans.push_back(r.top()[2]), r.pop(); break; } } assert(res[0] + 1 == (int)ans.size()); for(int i : ans) cout << i << '\n'; }
#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...