Submission #1252736

#TimeUsernameProblemLanguageResultExecution timeMemory
1252736nickolasarapidisSouvenirs (IOI25_souvenirs)C++20
7 / 100
11 ms412 KiB
#include "souvenirs.h"
#include <bits/stdc++.h>
using namespace std;

#define F first
#define S second

void buy_souvenirs(int N, long long P0){
    pair<vector<int>, long long> a;
    vector<int> cnt(N, 0);
    if(N == 2){
        a = transaction(P0 - 1);
        return;
    }
    for(int i = 1; i < N; i++){
        if(cnt[i] == i) continue;
        if(P0 == 3){
            if(i == N - 1){
                a = transaction(1);
                if(a.F.size() == 0){
                    for(int j = cnt[i]; j < i; j++){
                        a = transaction(2);
                    }
                }
                else{
                    for(int j = cnt[i] + 1; j < i; j++){
                        a = transaction(1);
                    }
                }
            }
            else{
                for(int j = cnt[i]; j < i; j++){
                    a = transaction(2);
                }
                for(int j = cnt[i + 1]; j < i + 1; j++){
                    a = transaction(1);
                }
            }
            break;
        }
        if(P0 == 2){
            for(int j = cnt[i]; j < i; j++){
                a = transaction(1);
            }
            break;
        }
        a = transaction(P0 - 1);
        cnt[i]++;
        if(a.S == 1) P0 -= 2;
        else{
            if(a.F.size() == 1){
                P0--;
            }
            else{
                cnt[i + 1]++;
                P0 -= 2;
            }
        }
        for(int j = cnt[i]; j < i; j++){
            a = transaction(P0);
        }
    }
}
#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...