Submission #1249461

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

pair<vector<int>, long long> transaction(long long M){
    cout << M << endl;
    vector<int> ans;
    for(int i=0;i<q.size();i++){
        if(q[i]<=M){
            M -= q[i];
            ans.push_back(i);
        }
    }
    for(int i:ans){
        cout << i << " ";
    }
    cout << "\n\n";
    return {ans,M};
}

void buy_souvenirs(int N, long long P0){
    vector<vector<long long>> answers(N);
    vector<int> count(N,0);
    for(int i=0;i<N;i++){
        vector<long long> x(N+2,0);
        answers[i] = x;
    }
    answers[0][0] = 1;
    answers[0][N] = P0;
    answers[0][N+1] = 1;

    vector<long long> cost(N,-1);
    for(int i=N-1;i>=0;i--){
        for(int j=i;j>=0;j--){
            if(answers[j][N+1]>0){
                int index = j;
                while(index<i){
                    long long c = (answers[index][N]-1)/answers[index][N+1];
                    pair<vector<int>, long long> x = transaction(c);
                    vector<int> a = x.first;
                    vector<long long> b(N+2,0);
                    b[N+1] = a.size();
                    b[N] = c-x.second;
                    for(int k=i+1;k<N;k++){
                        if(b[k]){
                            b[k] = 0;
                            b[N] -= cost[k];
                            b[N+1]--;
                        }
                    }
                    for(int z:a){
                        b[z] = 1;
                        count[z]++;
                    }
                    index = a[0];
                    answers[index] = b;
                }
                break;
            }
        }
        cost[i] = answers[i][N];
        for(int j=0;j<i;j++){
            if(answers[j][i]){
                answers[j][N+1]--;
                answers[j][N] -= cost[i];
                answers[j][i] = 0;
            }
        }
    }

    for(int i=0;i<N;i++){
        for(int j=0;j<i-count[i];j++){
            transaction(cost[i]);
        }
    }
}

Compilation message (stderr)

souvenirs.cpp: In function 'std::pair<std::vector<int>, long long int> transaction(long long int)':
souvenirs.cpp:8:19: error: 'q' was not declared in this scope
    8 |     for(int i=0;i<q.size();i++){
      |                   ^