Submission #1302453

#TimeUsernameProblemLanguageResultExecution timeMemory
1302453regulardude6Souvenirs (IOI25_souvenirs)C++20
Compilation error
0 ms0 KiB
#include <bits/stdc++.h>
#include "souvenirs.h"
using namespace std;

static int n;
static long long p0;
static vector<long long> pr;
static vector<long long> cnt;

static pair<vector<int>, long long> tr(long long M){
    auto res = transaction(M);
    for(int x: res.first) cnt[x]++;
    return res;
}

static void solve_idx(int i, long long M){
    if(i<=0 || i>=n) return;
    if(pr[i] != -1) return;

    auto res = tr(M);
    auto ids = res.first;
    long long S = M - res.second;

    if(ids.empty()) return;
    if(ids[0] != i) i = ids[0];

    vector<int> L = ids;
    long long sum = S;

    while(L.size() > 1){
        long long avg = sum / (long long)L.size();
        auto res2 = tr(avg);
        int j = res2.first.empty() ? -1 : res2.first[0];
        int pos = -1;

        if(j != -1){
            for(int k=0;k<(int)L.size();k++) if(L[k]==j){ pos=k; break; }
        }
        if(pos == -1){
            for(int x: res2.first){
                for(int k=0;k<(int)L.size();k++){
                    if(L[k]==x){ pos=k; j=x; break; }
                }
                if(pos!=-1) break;
            }
        }
        if(pos == -1) break;

        solve_idx(j, avg);

        long long suf = 0;
        for(int k=pos;k<(int)L.size();k++){
            int idx = L[k];
            suf += pr[idx];
        }
        sum -= suf;
        L.resize(pos);
    }

    if(!L.empty()) pr[L[0]] = sum;
}

vector<long long> buy_souvenirs(int N, long long P0){
    n = N; p0 = P0;
    pr.assign(n, -1);
    cnt.assign(n, 0);
    pr[0] = p0;

    solve_idx(1, p0 - 1);

    for(int i=2;i<n;i++){
        if(pr[i] == -1) solve_idx(i, pr[i-1] - 1);
    }

    for(int i=1;i<n;i++){
        while(cnt[i] < i) tr(pr[i]);
    }

    vector<long long> Q(n, 0);
    for(int i=0;i<n;i++) Q[i] = cnt[i];
    return Q;
}

Compilation message (stderr)

souvenirs.cpp:63:19: error: ambiguating new declaration of 'std::vector<long long int> buy_souvenirs(int, long long int)'
   63 | vector<long long> buy_souvenirs(int N, long long P0){
      |                   ^~~~~~~~~~~~~
In file included from souvenirs.cpp:2:
souvenirs.h:4:6: note: old declaration 'void buy_souvenirs(int, long long int)'
    4 | void buy_souvenirs(int N, long long P0);
      |      ^~~~~~~~~~~~~