Submission #1328597

#TimeUsernameProblemLanguageResultExecution timeMemory
1328597zeta314Souvenirs (IOI25_souvenirs)C++20
0 / 100
13 ms344 KiB
#include <iostream>
#include <vector>
#include "souvenirs.h"

using namespace std;

void buy_souvenirs(int n, long long p0){
    vector<long long> p(n, -1), b(n, 0);
    p[0] = p0;
    
    vector<int> a;
    long long r;
    
    long long idx = 1, nxt = p[0] - 1;
    while(true){
        if(p[idx] == -1){
            tie(a, r) = transaction(nxt);
            for(int i = 0; i < a.size(); i++)
                b[a[i]]++;  
                
            if(a.size() == 1){
                p[idx] = (p[idx - 1] - 1 - r);
                continue;
            } else{
                while(b[idx] < idx){
                    tie(a, r) = transaction(nxt);
                    for(int i = 0; i < a.size(); i++)
                        b[a[i]]++;
                }
                
                nxt = (p[idx - 1] - 1 - r) / a.size();
            }
            
            idx++;
        } else{
            while(b[idx] < idx){
                tie(a, r) = transaction(p[idx]);
                b[idx]++;
            }
            
            idx++;
        }
    }
}
#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...