#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 time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |