#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);
//cout << "first res: " << res.st.size() << " " << res.nd << '\n';
if(res.st.size() == 1){
ll x = p0-res.nd-2;
//cout << "x1: " << x << '\n';
transaction(x); transaction(x);
}
else{
ll x = ((p0-1-res.nd)+1)/2-1; //sufit na 2
//cout << "x2: " << x << '\n';
transaction(x);
}
return;
}
//teraz algos gdzie max 2 itemy!
ll val = p0;
int ile_j = 0;
rep(i,1,n-2){
val--;
pair<vi,ll> res = transaction(val);
if(res.st.size() == 2){
ile_j++;
val--; //zmniejszam zeby nie powielac 1
rep(j,1,i-1) transaction(val);
}
else{
if(res.nd == 1) val--;
rep(j,1,i-1) transaction(val);
}
}
//teraz dla n-1
val--;
rep(i,1,n-1-ile_j) transaction(val);
}
# | 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... |