#include "souvenirs.h"
#include <bits/stdc++.h>
using namespace std;
#define st first
#define nd second
#define pb push_back
#define rep(i,a,b) for(int i = a; i <= b; i++)
#define irep(i,a,b) for(int i = a; i >= b; i--)
typedef long long ll;
typedef long double ld;
//typedef __int128 int128;
typedef vector<int> vi;
typedef pair<int,int> pi;
typedef pair<double,double> pd;
typedef pair<ll,ll> pl;
void buy_souvenirs(int n, ll p0) {
if(n == 2){
transaction(p0-1);
return;
}
if(n == 3){
pair<vi,ll> res = transaction(p0-1);
if(res.st.size() == 1){
ll x = (p0-res.nd)/2;
transaction(x); transaction(x);
}
else{
ll x = (p0-res.nd+1)/2-1; //sufit na 2
transaction(x);
}
return;
}
//teraz algos gdzie max 2 itemy!
int akt_i = 0;
int next_i = 0;
ll val = p0-1;
rep(i,1,n-1){
pair<vi,ll> res;
while(akt_i < i){
res = transaction(val);
akt_i++;
if(res.st.size() == 2) next_i++;
}
if(res.st.size() == 1) val = val-res.nd-1;
else val = (val-res.nd+1)/2-1;
akt_i = next_i;
next_i = 0;
}
}
# | 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... |