#include <bits/stdc++.h>
using namespace std;
const long long MAXN = 100 + 1;
long long counter[MAXN], values[MAXN];
std::pair<std::vector<int>, long long> transaction(long long M);
void buy_souvenirs(int N, long long P0){
if(N == 1)
{
return;
}
else if(N == 2)
{
transaction(P0 - 1);
}
else if(N == 3)
{
pair<vector<int>, long long> p = transaction(P0 - 1);
if(p.first.size() == 1)
{
long long first_val = (P0 - 1) - p.second;
transaction(first_val - 1);
transaction(first_val - 1);
}
else
{
long long total_sum = (P0 - 1) - p.second;
transaction(total_sum / 2);
}
}
else
{
long long prev = P0;
values[0] = P0;
for(int i = 1 ; i < N ; ++i)
{
pair<vector<int>, long long> p = transaction(prev - 1);
for(int idx : p.first)
{
counter[idx]++;
}
if(p.first.size() == 1)
{
prev -= !p.second ? 1 : 2;
values[i] = prev;
}
else
{
prev -= 2;
values[i] = prev;
}
}
for(int i = 1 ; i < N ; ++i)
{
while(counter[i] < i)
{
transaction(values[i]);
counter[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... |