Submission #1278228

#TimeUsernameProblemLanguageResultExecution timeMemory
1278228SabaKharebava축제 (IOI25_festival)C++20
5 / 100
1096 ms4808 KiB
#include<bits/stdc++.h>

using namespace std;

#define pb push_back

const long long MOD = 9223372036854775807;

vector<int> max_coupons(int ra, vector<int> p, vector<int> t) {
	int n = p.size();
	long long a = ra;

	vector<int> order;
	for (int i = 0; i < n; i++)
		order.pb(i);

	sort(order.begin(), order.end(), [&](int i, int j) {
		if (t[i] == t[j]) {
			return p[i] < p[j]; 
		} else {
			long long A = -p[i]*t[i]*t[j] - p[j]*t[j];
			long long B = -p[j]*t[i]*t[j] - p[i]*t[i];

			if (A == B)
				return p[i] < p[j];
			return A > B;
		}
	});

	vector<int> ans;
	vector<bool> used(order.size(), false);
	bool bought;
	while (true) {
		bought = false;
		for (int i = 0; i < order.size(); i++) {
			if (used[i])
				continue;
			else if (a >= p[order[i]]) {
				bought = true;
				a = ((a - p[order[i]]) * t[order[i]]) % MOD;
				ans.pb(order[i]);
				used[i] = true;
				break;
			}
		}

		if (!bought)
			break;
	}

	return ans;
}
#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...