Submission #1256251

#TimeUsernameProblemLanguageResultExecution timeMemory
1256251Samuraj선물 (IOI25_souvenirs)C++20
7 / 100
12 ms412 KiB
#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 timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...