#include <bits/stdc++.h>
using namespace std;
using ll = long long;
std::pair<std::vector<int>, long long> transaction(long long M);
ll res[101], cnt[101], tmp[101];
void buy_souvenirs(int n, long long p) {
auto [v, x] = transaction(3 * p / 4);
memset(res, 0x3f, sizeof res);
res[0] = p;
res[1] = 3 * res[0] / 4 - x;
for (auto x: v) cnt[x] ++;
for (int i = 2; i < n; i ++) {
res[i] = min({res[i], res[i - 2] / 2, 3 * res[i - 1] / 4});
for (int j = cnt[i] + 1; j <= i; j ++) {
tmp[i - 1] = res[i - 1];
tmp[i] = res[i];
for (int k = i + 1; k < n; k ++)
tmp[k] = tmp[k - 1] / 2;
auto [v, x] = transaction(res[i]);
for (auto x: v) {
cnt[x] ++;
if (tmp[x] < res[i]) res[i] -= tmp[x];
}
// cout << "Buy: " << res[i] << endl;
// for (auto x: v) cout << x << ' '; cout << endl;
// cout << "Rem: " << x << endl;
}
}
}
# | 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... |