제출 #1249441

#제출 시각아이디문제언어결과실행 시간메모리
1249441jtnydv25선물 (IOI25_souvenirs)C++20
컴파일 에러
0 ms0 KiB
#include <bits/stdc++.h>
using namespace std;

void buy_souvenirs(int n, long long P0){
    vector<long long> P(n, P0);
    vector<int> cnt(n);

    function<pair<vector<int>, long long>(long long, int)> query = [&](long long m, int k){
        pair<vector<int>, long long> res = transaction(m);
        vector<int> &c = res.first;
        long long p = res.second;
        long long used = m - p;
        for(int i: c) cnt[i]++;
        while(!c.empty() && c.back() >= k){
            used -= P[c.back()];
            c.pop_back();
        }
        assert(!c.empty());
        return make_pair(c, used);
    };

    function<int(long long, int)> get = [&](long long X, int k){
        pair<vector<int>, long long> Q = query(X, k);
        vector<int> S = Q.first;
        long long sm = Q.second;
        int i = S[0];
        while((int)S.size() > 1){
            k = get((sm - 1) / (int)S.size(), k);
            while(!S.empty() && S.back() >= k){
                sm -= P[S.back()];
                S.pop_back();
            }
            assert(!S.empty());
        }
        P[i] = sm;
        if(k > i + 1) get(P[i] - 1, k);
        return i;
    };

    get(P[0] - 1, n);

    for(int i = 0; i < n; i++){
        while(cnt[i] < i){
            transaction(P[i]);
            cnt[i]++;
        }
    }
}

컴파일 시 표준 에러 (stderr) 메시지

souvenirs.cpp: In lambda function:
souvenirs.cpp:9:44: error: 'transaction' was not declared in this scope
    9 |         pair<vector<int>, long long> res = transaction(m);
      |                                            ^~~~~~~~~~~
souvenirs.cpp: In function 'void buy_souvenirs(int, long long int)':
souvenirs.cpp:44:13: error: 'transaction' was not declared in this scope
   44 |             transaction(P[i]);
      |             ^~~~~~~~~~~