#include "souvenirs.h"
#include <bits/stdc++.h>
using namespace std;
extern pair<vector<int>, long long> transaction(long long m);
void buy_souvenirs(int n, long long p0) {
if (n == 2) auto [l, r] = transaction(p0 - 1);
else if (n == 3) {
auto [l, r] = transaction(p0 - 1);
if (l.size() == 1) {
for (int i = 0; i < 2; i++) auto [l2, r2] = transaction(p0 - r - 2);
}else {
long long sum = p0 - r - 1;
auto [l2, r2] = transaction(sum / 2 - ((sum & 1) ^ 1));
}
}else {
vector<long long> p(n, -1LL), q(n, 0LL);
p[0] = p0;
for (int i = 1; i < n; i++) {
auto [l, r] = transaction(p[i - 1] - 1);
for (int j = 0; j < l.size(); j++) q[--l[j]]++;
if (l.size() == 1) {
if (r == 1) p[i] = p[i - 1] - 1;
else p[i] = p[i - 1] - 2;
}else p[i] = p[i - 1] - 2;
}
for (int i = 1; i < n; i++) {
while (q[i] < i) {
auto [l, r] = transaction(p[i]);
q[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... |