#include "souvenirs.h"
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
int n, cnt[105];
ll p[105];
ll adu_calculate(ll s, int k) {
s += k*(k-1)/2 + k - 1;
return s/k;
}
void adu_build(ll money) {
auto [a, remain] = transaction(money);
ll sum = money - remain;
for (int i : a)
cnt[i]++;
while (a.size()>1 && p[a.back()]>0) {
sum -= p[a.back()];
a.pop_back();
}
int k = a.size();
if (k>1) {
ll x = adu_calculate(sum, k);
adu_build(x-1);
}
p[a[0]] = sum;
if (a[0]+1<n && p[a[0]+1]==0) adu_build(p[a[0]]-1);
}
void adu_complete() {
for (int i=1; i<n; i++) {
while (cnt[i]<i) {
transaction(p[i]);
cnt[i]++;
}
}
}
void buy_souvenirs(int N, ll P0) {
n = N;
p[0] = P0;
adu_build(P0-1);
adu_complete();
}
# | 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... |