Submission #952046

# Submission time Handle Problem Language Result Execution time Memory
952046 2024-03-23T04:27:10 Z Angus_Yeung Hiring (IOI09_hiring) C++17
59 / 100
319 ms 18168 KB
#include <bits/stdc++.h>
#define val first
#define id second
#define pii pair<ll, ll>
typedef long long ll;
const ll MOD = 1000000007LL;
const ll INF = 1e15;
using namespace std;

struct worker {
	ll s, q, id;
};

ll n, w, sum;
pair<ll, long double> ans;
worker a[500010];
priority_queue<pii> q;

long double f(worker x) {
	return x.s*1.0/x.q;
}

int main() {
	cin.tie(0); cout.tie(0);
	ios::sync_with_stdio(0);
	
	cin >> n >> w;
	for (int i = 1; i <= n; i++) {
		cin >> a[i].s >> a[i].q;
		a[i].id = i;
	}
	sort(a+1, a+n+1, [&](worker x, worker y) -> bool {
		return f(x) < f(y);
	});
	
	sum = 0; ans = {0, 0};
	while (!q.empty()) q.pop();
	for (int i = 1; i <= n; i++) {
		q.push({a[i].q, a[i].id});
		sum += a[i].q;
		while (!q.empty() && f(a[i])*sum > w) {
			sum -= q.top().val;
			q.pop();
		}
		ans = max(ans, {(ll)q.size(), sum*f(a[i])});
	}
	
	if (ans.first == 0) {
		cout << "0\n";
		return 0;
	}
	
	sum = 0;
	while (!q.empty()) q.pop();
	for (int i = 1; i <= n; i++) {
		q.push({a[i].q, a[i].id});
		sum += a[i].q;
		while (!q.empty() && f(a[i])*sum > w) {
			sum -= q.top().val;
			q.pop();
		}
		if (ans.first == (ll)q.size() && ans.second == sum*f(a[i])) {
			cout << ans.first << "\n";
			while (!q.empty()) {
				cout << q.top().id << "\n";
				q.pop();
			}
			return 0;
		}
	}
	
	return 0;
}
# Verdict Execution time Memory Grader output
1 Correct 1 ms 600 KB Output is correct
2 Partially correct 0 ms 348 KB Partially correct
3 Partially correct 0 ms 348 KB Partially correct
4 Partially correct 0 ms 344 KB Partially correct
5 Partially correct 0 ms 344 KB Partially correct
6 Partially correct 1 ms 348 KB Partially correct
7 Partially correct 1 ms 348 KB Partially correct
8 Partially correct 2 ms 348 KB Partially correct
9 Correct 2 ms 604 KB Output is correct
10 Partially correct 3 ms 600 KB Partially correct
11 Partially correct 3 ms 604 KB Partially correct
12 Partially correct 4 ms 2908 KB Partially correct
13 Partially correct 4 ms 2652 KB Partially correct
14 Correct 6 ms 2908 KB Output is correct
15 Partially correct 7 ms 2684 KB Partially correct
# Verdict Execution time Memory Grader output
1 Correct 0 ms 348 KB Output is correct
2 Partially correct 1 ms 348 KB Partially correct
3 Correct 1 ms 348 KB Output is correct
4 Partially correct 9 ms 2908 KB Partially correct
5 Partially correct 24 ms 2996 KB Partially correct
6 Correct 181 ms 10996 KB Output is correct
7 Partially correct 234 ms 15348 KB Partially correct
# Verdict Execution time Memory Grader output
1 Partially correct 1 ms 344 KB Partially correct
2 Partially correct 1 ms 348 KB Partially correct
3 Correct 1 ms 348 KB Output is correct
# Verdict Execution time Memory Grader output
1 Partially correct 1 ms 348 KB Partially correct
2 Partially correct 1 ms 344 KB Partially correct
3 Correct 1 ms 348 KB Output is correct
# Verdict Execution time Memory Grader output
1 Partially correct 1 ms 344 KB Partially correct
2 Partially correct 1 ms 348 KB Partially correct
3 Correct 1 ms 348 KB Output is correct
# Verdict Execution time Memory Grader output
1 Partially correct 64 ms 5844 KB Partially correct
2 Partially correct 63 ms 5892 KB Partially correct
3 Correct 63 ms 5852 KB Output is correct
# Verdict Execution time Memory Grader output
1 Partially correct 101 ms 8916 KB Partially correct
2 Partially correct 104 ms 8936 KB Partially correct
3 Correct 100 ms 8912 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 263 ms 15592 KB Output is correct
2 Partially correct 261 ms 16760 KB Partially correct
3 Correct 262 ms 15224 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 302 ms 16840 KB Output is correct
2 Partially correct 319 ms 16732 KB Partially correct
3 Correct 301 ms 18168 KB Output is correct