Submission #1306930

#TimeUsernameProblemLanguageResultExecution timeMemory
1306930MunkhErdeneSouvenirs (IOI25_souvenirs)C++17
0 / 100
12 ms400 KiB
#include "souvenirs.h"
#include <utility>
#include <vector>
#include <bits/stdc++.h>
using namespace std;
using ll = long long;

void buy_souvenirs(int N, long long P0) {
    ll n = N;
    ll p0 = P0;
    vector<ll> tar(n), cnt(n, 0);
    iota(tar.begin(), tar.end(), 0);
    ll pre = 0;
    ll cur = p0 - 2;
    while(cur >= 0){
        if(pre == n - 1) break;
        auto res = transaction(cur);
        cnt[res.first[0]]++;
        if(res.first[0] == pre + 1) {
            for(;cnt[res.first[0]] < tar[res.first[0]]; cnt[res.first[0]]++) {
                transaction(cur);
            }
            pre = res.first[0];
            cur -= (pre == n ? 1 : 2);
            continue;
        }
        else{
            for(;cnt[res.first[0] - 1] < tar[res.first[0] - 1]; cnt[res.first[0] - 1]++) {
                transaction(cur + 1);
            }
            cur -= 1;
            pre++;
        }
    }
    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...