#include <bits/stdc++.h>
using namespace std;
pair<vector<int>, long long> transaction(long long M);
void buy_souvenirs(int N, long long P0){
if(N == 2){
auto pii = transaction(P0-1);
return;
} else if(N == 3){
auto pii = transaction(P0-1);
if(pii.first.size() == 2){
auto p3 = transaction((P0-1-pii.second)/2);
return;
}
auto p = transaction(P0-2-pii.second);
auto p2 = transaction(P0-2-pii.second);
return;
} else{
long long l1 = P0;
map<int,int> mp;
for(int i = 0; i < N; i++) mp[i] = 0;
int c = 0;
for(int i = 1; i < N; i++){
bool tr = false;
int cnt = 0;
while(mp[i] < i){
if(c >= 4999) return;
if(l1 <= 1) return;
auto pii = transaction(l1-1);
c++;
for(auto t : pii.first){
if(t >= 0 && t < N) mp[t]++;
}
if(pii.first.size() == 2){
tr = true;
}
if(pii.second == 1ll){
tr = true;
}
cnt++;
if(cnt > 5000) return;
}
bool bl = true;
for(int k = 1; k < N; k++){
if(mp[k] < k){ bl = false; break; }
}
if(bl) return;
l1--;
if(l1 < 1) l1 = 1;
if(tr){
if(l1 > 1) l1--;
}
}
}
}
| # | 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... |