Submission #1250107

#TimeUsernameProblemLanguageResultExecution timeMemory
1250107zzzzzzzzzzzzzzz선물 (IOI25_souvenirs)C++20
39 / 100
12 ms420 KiB
#include "souvenirs.h"
#include <bits/stdc++.h>

using namespace std;

typedef long long ll;

int n;
vector<ll> ansli, cnt;

int solve(ll ans, int e){ //end: 어디까지 아는가?
    auto res = transaction(ans);
    vector<int> v=res.first;
    for(int j:v) cnt[j]++;
    ll cost=ans-res.second;
    while(v[0]<e){
        if(e<=v.back()){
            cost-=ansli[v.back()];
            v.pop_back();
        }
        if(v[0]==e-1) break;
        e=solve((cost-1)/(ll)v.size(),e);
    }
    ansli[v[0]]=cost;
    return v[0];
}

void buy_souvenirs(int N, ll P0) {
    n=N;
    ansli.resize(n);
    cnt.resize(n);
    solve(P0-1,n);
    for(int i=1;i<n;i++){
        while(cnt[i]<i){
            transaction(ansli[i]);
            cnt[i]++;
        }
    }
    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...