#include "souvenirs.h"
#include <utility>
#include <vector>
#include <bits/stdc++.h>
using namespace std;
void buy_souvenirs(int n, long long P0) {
//pair<vector<int>, long long> res = transaction(3);
if(n==2){
transaction(P0-1);
return;
}
else if(n==3){
pair<vector<int>,long long>res = transaction(P0-1);
if(res.first.size()==1){
long long req = P0-1-res.second-1;
transaction(req);
transaction(req);
}
else{
long long req = (P0-1-res.second)/2;
transaction(req);
}
return;
}
else{
//cas 3
long long curr = P0-1;
int req[n];
iota(req,req+n,0);
long long val[n];
val[0]=P0;
for(int i = 0;i<n;i++){
while(req[i]){
pair<vector<int>, long long> res = transaction(curr);
assert(res.first.size()<=2);
for(int i : res.first){
req[i]--;
}
if(res.first.size()==2){
assert(res.first[1]==n-1);
assert(res.second==0);
val[i]=curr-1;
curr--;
}
else if (res.second){
assert(res.second==1);
curr--;
val[i]=curr;
}
else{
val[i]=curr;
}
}
curr=val[i]-1;
}
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... |