Submission #1255505

#TimeUsernameProblemLanguageResultExecution timeMemory
1255505AvianshSouvenirs (IOI25_souvenirs)C++20
39 / 100
12 ms412 KiB
#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 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...