#include "souvenirs.h"
#include <utility>
#include <algorithm>
#include <array>
#include <bitset>
#include <cassert>
#include <chrono>
#include <climits>
#include <cmath>
#include <complex>
#include <cstring>
#include <functional>
#include <iomanip>
#include <iostream>
#include <map>
#include <numeric>
#include <queue>
#include <random>
#include <set>
#include <stack>
#include <vector>
using namespace std;
void buy_souvenirs(int N, long long P0) {
long long price[N];
int num[N] = {0};
price[0] = P0;
price[N - 1] = 1;
num[N - 1] = 1;
while(true) {
pair<vector<int>, long long> res = transaction(price[N - 1]);
if(!res.first.empty())
break;
price[N - 1]++;
}
for(int i = N - 2; i; i--) {
pair<vector<int>, long long> res = transaction(min(price[i + 1] * 2, price[0] - 1));
price[i] = res.second;
for(auto x: res.first) {
num[x]++;
if(x != i)
price[i] += price[x];
}
price[i] = min(price[i + 1] * 2, price[0] - 1) - price[i];
}
for(int i = 1; i < N; i++) {
for(int j = 0; j < i - num[i]; j++)
transaction(price[i]);
}
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... |