Submission #442958

#TimeUsernameProblemLanguageResultExecution timeMemory
442958dutchHiring (IOI09_hiring)C++17
1 / 100
208 ms17644 KiB
#include <bits/stdc++.h>
using namespace std;
#define int long long
 
int n, w, j, s;
array<int, 2> res, c;
 
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;
	}

	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(), i[0]});
	}
 
	vector<int> ans = {res[0]};
	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 == (c = {(int)r.size(), i[0]})){
			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...