Submission #1341636

#TimeUsernameProblemLanguageResultExecution timeMemory
1341636KasymK선물 (IOI25_souvenirs)C++20
21 / 100
13 ms412 KiB
#include "bits/stdc++.h"
// #include "grader.cpp"
#include "souvenirs.h"
using namespace std;
#define ff first
#define ss second    
#define all(v) v.begin(), v.end()
#define ll long long
#define pb push_back
#define pii pair<int, int>
#define pli pair<ll, int>
#define pll pair<ll, ll>
#define tr(i, c) for(auto i = c.begin(); i != c.end(); ++i)
#define wr puts("----------------")
#define mm make_pair
template<class T>bool umin(T& a,T b){if(a>b){a=b;return 1;}return 0;}
template<class T>bool umax(T& a,T b){if(a<b){a=b;return 1;}return 0;}
using node=pair<vector<int>, ll>;

void buy_souvenirs(int n, ll p0){
    int cnt=0;
    ll prev=p0;
    bool have=1;
    for(int i = 1; i < n-1; ++i){
        node P=transaction(prev-1);
        ll pi;
        if((int)P.ff.size()==1){
            assert(P.ss<2);
            if(P.ss==0)
                pi=prev-1;
            else
                pi=prev-2, have=0;
            int rep=i-1;
            while(rep--)
                P=transaction(pi);
        }
        else{
            assert((int)P.ff.size()==2);
            assert(have);
            cnt++;
            pi=prev-2;
            int rep=i-1;
            while(rep--)
                node P=transaction(pi);
        }
        prev=pi;
    }
    if(have){
        int rep=n-1-cnt;
        while(rep--)
            node P=transaction(prev-1);
        return;
    }
    int rep=n-1;
    while(rep--)
        node P=transaction(prev-1);
    return;
}
#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...