제출 #1257464

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

vector<long long> P;
vector<int> cnt;

vector<long long> total;
vector< pair<vector<int>, long long> > transactions;

void update(vector<int> &ls) {
    for (int x : ls) cnt[x]++;
}

void buy_souvenirs(int N, long long P0) {
    // pair<vector<int>, long long> res = transaction(3);
    P.resize(N);
    P[0] = P0;
    cnt.resize(N);

    transactions.push_back(transaction(P0-1));
    total.pop_back(P0-1);

    for (int i = 1; i < N; i++) {
        P0 /= 2;
        assert(P0 > 0);
        transactions.push_back(transaction(P0));
        total.push_back(P0);
    }

    reverse(transactions.begin(), transactions.end());

    for (auto &tr : transactions) {
        update(tr.first);
        for (int i = 1; i < tr.first.size(); i++) total[total.size()-1] -= P[tr.first[i]];
        total[total.size()-1] -= tr.second;
        P[tr.first[0]] = total.back();
        total.pop_back();
    }

    for (int i = 1; i < N; i++) {
        for (int j = cnt[i]+1; j <= i; j++) transaction(P[i]);
    }

    return;
}

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

souvenirs.cpp: In function 'void buy_souvenirs(int, long long int)':
souvenirs.cpp:22:19: error: no matching function for call to 'std::vector<long long int>::pop_back(long long int)'
   22 |     total.pop_back(P0-1);
      |     ~~~~~~~~~~~~~~^~~~~~
In file included from /usr/include/c++/11/vector:67,
                 from souvenirs.h:2,
                 from souvenirs.cpp:1:
/usr/include/c++/11/bits/stl_vector.h:1225:7: note: candidate: 'void std::vector<_Tp, _Alloc>::pop_back() [with _Tp = long long int; _Alloc = std::allocator<long long int>]'
 1225 |       pop_back() _GLIBCXX_NOEXCEPT
      |       ^~~~~~~~
/usr/include/c++/11/bits/stl_vector.h:1225:7: note:   candidate expects 0 arguments, 1 provided