Submission #442828

#TimeUsernameProblemLanguageResultExecution timeMemory
442828dutchHiring (IOI09_hiring)C++17
60 / 100
364 ms27080 KiB
#include <bits/stdc++.h>
using namespace std;
#define int long long

int n, w, j, s, res;

signed main(){
	cin.tie(0)->sync_with_stdio(0);
	cin >> n >> w;
	array<int, 3> a[n];
	for(auto &i : a){
		cin >> i[0] >> i[1];
		i[0] = (w * i[1]) / -i[0];
		i[2] = ++j;
	}

	sort(a, a+n);
	priority_queue<int> q;
	priority_queue<array<int, 2>> r;

	for(auto &i : a){
		q.push(i[1]);
		s += i[1];
		while(s > -i[0]) s -= q.top(), q.pop();
		res = max(res, (int)q.size());
	}

	vector<int> ans = {res};
	s = 0;
	for(auto &i : a){
		r.push({i[1], i[2]});
		s += i[1];
		while(s > -i[0]) s -= r.top()[0], r.pop();
		if(res == (int)r.size()){
			while(!r.empty()) ans.push_back(r.top()[1]), r.pop();
			break;
		}
	}

	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...