Submission #1250852

#TimeUsernameProblemLanguageResultExecution timeMemory
1250852JoksimKaktusSouvenirs (IOI25_souvenirs)C++20
25 / 100
13 ms412 KiB
#include "souvenirs.h"
#include <bits/stdc++.h>

using namespace std;

void buy_souvenirs(int N, long long p) {
    long long bet = p-1;
    vector<long long> bought(N);
    for(int i = N-1;i >= 1;i--){
        pair<vector<int>,long long> k;
        while(bought[N-i] < N-i){
            //cout << bet << " " << N-i << "\n";
            k = transaction(bet);
            bool no = true;
            for(int ind : k.first){
                bought[ind]++;
                if(ind == N-i)no = false;
            }
            if(no)bet++;
        }
        if(i == 2){
            if(k.first.size() == 2){
                bet = (bet-k.second)/2;
            }else{
                bet = bet-k.second-1;
            }
        }else{
            bet /=2;
        }
    }
    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...