#include <bits/stdc++.h>
#include "souvenirs.h"
using namespace std;
using ll = long long;
using res_type = pair<vector<int>, ll>;
void buy_souvenirs(int N, ll P0) {
res_type res;
if (N == 2) { // s1
res = transaction(P0 - 1);
return;
}
if (N == 3) { // s4
res = transaction(P0 - 1);
bool bought_p2 = find(res.first.begin(), res.first.end(), 2) != res.first.end();
ll change = res.second;
ll used = (P0 - 1) - change;
// for (int i : res.first)
// cerr << i << ' ';
// cerr << '\n';
if (bought_p2) {
ll p1 = used / 2 + 1; // note, floordiv
transaction(used - p1);
} else { // then (p0 - 1) was not enough?
ll p1 = used;
transaction(p1 - 1);
transaction(p1 - 1);
}
return;
}
if (P0 == N) { // s2
for (int i = 1; i < N; i++) {
int price = N - i;
for (int amt = 1; amt <= i; amt++) {
transaction(price);
}
}
return;
}
// ll P_i = P0; // good for s3 ??
// ll to_buy = 0;
// for (int i = 1; i < N; i++) {
// ll bought, change;
// for (int amt = i; amt > 0; amt--) {
// res = transaction(P_i - 1);
// bought = res.first[i];
// change = res.second;
// }
// P_i = (P_i - 1) - change;
// }
return;
}
# | 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... |