#ifdef EVAL
#include "souvenirs.h"
#endif
#include <bits/stdc++.h>
using namespace std;
#ifndef EVAL
pair<vector<int>, long long> transaction(long long M);
#endif
void buy_souvenirs(int N, long long P0) {
if (N == 2) {
transaction(P0 - 1);
return;
}
if (N == 3) {
auto [v, x] = transaction(P0 - 1);
if (v.size() == 2) {
long long sum = P0 - 1 - x;
transaction(sum / 2);
}
else {
long long P1 = P0 - 1 - x;
transaction(P1 - 1);
transaction(P1 - 1);
}
return;
}
pair<vector<int>, long long> ans;
int cur = 1;
int cnt = 0;
long long cur_q = P0 - 1;
while (true) {
ans = transaction(cur_q);
if (!(ans.second == 0 && ans.first.size() == 1 && ans.first[0] == cur)) {
break;
}
cnt++;
if (cnt == cur) {
cur++;
cnt = 0;
cur_q--;
if (cur == N) {
return;
}
}
}
}
#ifndef EVAL
pair<vector<int>, long long> transaction(long long M) {
return {{}, M};
}
#endif
# | 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... |