Submission #1267964

#TimeUsernameProblemLanguageResultExecution timeMemory
1267964zwezdinvSouvenirs (IOI25_souvenirs)C++20
7 / 100
12 ms408 KiB
#include<bits/stdc++.h>
#include "souvenirs.h"

void buy_souvenirs(int n, long long p0) {
	std::vector<long long> p(n);
	p[0] = p0;
	std::vector<int> cnt(n);
	auto go = [&](auto self, long long s) -> void {
		auto [occ, rem] = transaction(s);
		for (auto x : occ) cnt[x]++;
		s -= rem;
		if (occ.size() == 1) {
			p[occ[0]] = s;
		} else {
			long long q = s / occ.size();
			self(self, q);
			for (int i = 0; i < n; ++i) {
				if (q >= p[i]) {
					q -= p[i];
					s -= p[i];
				}
			}
			self(self, s);
		}
	};
	for (int i = 0; i < n; ++i) {
		if (!p[i]) {
			go(go, p[i - 1] - 1);
		}
		while (cnt[i] < i) {
			cnt[i]++;
			transaction(p[i]);
		}
	}
}
#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...