제출 #1249395

#제출 시각아이디문제언어결과실행 시간메모리
1249395mondellbit선물 (IOI25_souvenirs)C++20
컴파일 에러
0 ms0 KiB
#include "souvenirs.h"
#include <utility>
#include <vector>
#include <bits/stdc++.h>
int n;
const int N = 105;
int hidden_p[N];
int counter[N];

pair <vector <int>, int> transaction(int m){
    assert(m >= hidden_p[n - 1] && m < hidden_p[0]);
    
    vector <int> bought;
    for (int i = 0; i < n; i++){
        if (m >= hidden_p[i]){
            m -= hidden_p[i];
            bought.push_back(i);
            counter[i]++;
        }
    }
    
    return make_pair(bought, m);
}

void buy_souvenirs(int n, int p0){
    vector<set<int>> depend(n);
    vector<int> sum(n);
    vector<int> ans(n, -1);
    ans[0] = p0;
    
    vector <int> counter(n, 0);
    
    while (true){
        int left = 0;
        for (int i = 0; i < n; i++){
            left += ans[i] == -1;
        }
        
        if (left == 0){
            break;
        }
        
        bool have = false;
        
        for (int i = n - 1; i >= 0; i--){
            if (ans[i] == -1) have = true;
            if (ans[i] != -1 && have){
                auto [vv, ll] = transaction(ans[i] - 1);
                set <int> ss;
                for (auto x : vv) ss.insert(x), counter[x]++;
                int got = ans[i] - 1 - ll;
                
                for (int j = 0; j < n; j++){
                    if (ans[j] != -1 && ss.count(j)){
                        ss.erase(j);
                        got -= ans[j];
                    }
                }
                
                depend[i + 1] = ss;
                sum[i + 1] = got;
                break;
            }
            if (depend[i].size() == 1){
                ans[i] = sum[i];
                depend[i].clear();
                
                for (int j = 0; j < n; j++){
                    if (depend[j].count(i)){
                        sum[j] -= ans[i];
                        depend[j].erase(i);
                    }
                }
                break;
            }
            if (depend[i].size()){
                int x = sum[i] / (int)depend[i].size();
                auto [vv, ll] = transaction(x);
                set <int> ss;
                for (auto x : vv) ss.insert(x), counter[x]++;
                
                int got = x - ll;
                
                for (int j = 0; j < n; j++){
                    if (ans[j] != -1 && ss.count(j)){
                        got -= ans[j];
                        ss.erase(j);
                    }
                }
                
                assert(!ss.empty());
                int k = *ss.begin();
                depend[k] = ss;
                sum[k] = got;
                break;
            }
        }
    }
    
    for (int i = 0; i < n; i++){
        while (counter[i] < i){
            counter[i]++;
            transaction(ans[i]);
        }
    }
}

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

souvenirs.cpp:10:7: error: 'vector' was not declared in this scope
   10 | pair <vector <int>, int> transaction(int m){
      |       ^~~~~~
souvenirs.cpp:10:7: note: suggested alternatives:
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:389:11: note:   'std::vector'
  389 |     class vector : protected _Vector_base<_Tp, _Alloc>
      |           ^~~~~~
In file included from souvenirs.h:2,
                 from souvenirs.cpp:1:
/usr/include/c++/11/vector:86:13: note:   'std::pmr::vector'
   86 |       using vector = std::vector<_Tp, polymorphic_allocator<_Tp>>;
      |             ^~~~~~
souvenirs.cpp:10:7: error: 'vector' was not declared in this scope
   10 | pair <vector <int>, int> transaction(int m){
      |       ^~~~~~
souvenirs.cpp:10:7: note: suggested alternatives:
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:389:11: note:   'std::vector'
  389 |     class vector : protected _Vector_base<_Tp, _Alloc>
      |           ^~~~~~
In file included from souvenirs.h:2,
                 from souvenirs.cpp:1:
/usr/include/c++/11/vector:86:13: note:   'std::pmr::vector'
   86 |       using vector = std::vector<_Tp, polymorphic_allocator<_Tp>>;
      |             ^~~~~~
souvenirs.cpp:10:7: error: 'vector' was not declared in this scope
   10 | pair <vector <int>, int> transaction(int m){
      |       ^~~~~~
souvenirs.cpp:10:7: note: suggested alternatives:
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:389:11: note:   'std::vector'
  389 |     class vector : protected _Vector_base<_Tp, _Alloc>
      |           ^~~~~~
In file included from souvenirs.h:2,
                 from souvenirs.cpp:1:
/usr/include/c++/11/vector:86:13: note:   'std::pmr::vector'
   86 |       using vector = std::vector<_Tp, polymorphic_allocator<_Tp>>;
      |             ^~~~~~
souvenirs.cpp:10:7: error: 'vector' was not declared in this scope
   10 | pair <vector <int>, int> transaction(int m){
      |       ^~~~~~
souvenirs.cpp:10:7: note: suggested alternatives:
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:389:11: note:   'std::vector'
  389 |     class vector : protected _Vector_base<_Tp, _Alloc>
      |           ^~~~~~
In file included from souvenirs.h:2,
                 from souvenirs.cpp:1:
/usr/include/c++/11/vector:86:13: note:   'std::pmr::vector'
   86 |       using vector = std::vector<_Tp, polymorphic_allocator<_Tp>>;
      |             ^~~~~~
souvenirs.cpp:10:7: error: 'vector' was not declared in this scope
   10 | pair <vector <int>, int> transaction(int m){
      |       ^~~~~~
souvenirs.cpp:10:7: note: suggested alternatives:
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:389:11: note:   'std::vector'
  389 |     class vector : protected _Vector_base<_Tp, _Alloc>
      |           ^~~~~~
In file included from souvenirs.h:2,
                 from souvenirs.cpp:1:
/usr/include/c++/11/vector:86:13: note:   'std::pmr::vector'
   86 |       using vector = std::vector<_Tp, polymorphic_allocator<_Tp>>;
      |             ^~~~~~
souvenirs.cpp:10:7: error: 'vector' was not declared in this scope
   10 | pair <vector <int>, int> transaction(int m){
      |       ^~~~~~
souvenirs.cpp:10:7: note: suggested alternatives:
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:389:11: note:   'std::vector'
  389 |     class vector : protected _Vector_base<_Tp, _Alloc>
      |           ^~~~~~
In file included from souvenirs.h:2,
                 from souvenirs.cpp:1:
/usr/include/c++/11/vector:86:13: note:   'std::pmr::vector'
   86 |       using vector = std::vector<_Tp, polymorphic_allocator<_Tp>>;
      |             ^~~~~~
souvenirs.cpp:10:7: error: 'vector' was not declared in this scope
   10 | pair <vector <int>, int> transaction(int m){
      |       ^~~~~~
souvenirs.cpp:10:7: note: suggested alternatives:
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:389:11: note:   'std::vector'
  389 |     class vector : protected _Vector_base<_Tp, _Alloc>
      |           ^~~~~~
In file included from souvenirs.h:2,
                 from souvenirs.cpp:1:
/usr/include/c++/11/vector:86:13: note:   'std::pmr::vector'
   86 |       using vector = std::vector<_Tp, polymorphic_allocator<_Tp>>;
      |             ^~~~~~
souvenirs.cpp:10:7: error: 'vector' was not declared in this scope
   10 | pair <vector <int>, int> transaction(int m){
      |       ^~~~~~
souvenirs.cpp:10:7: note: suggested alternatives:
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:389:11: note:   'std::vector'
  389 |     class vector : protected _Vector_base<_Tp, _Alloc>
      |           ^~~~~~
In file included from souvenirs.h:2,
                 from souvenirs.cpp:1:
/usr/include/c++/11/vector:86:13: note:   'std::pmr::vector'
   86 |       using vector = std::vector<_Tp, polymorphic_allocator<_Tp>>;
      |             ^~~~~~
souvenirs.cpp:10:7: error: 'vector' was not declared in this scope
   10 | pair <vector <int>, int> transaction(int m){
      |       ^~~~~~
souvenirs.cpp:10:7: note: suggested alternatives:
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:389:11: note:   'std::vector'
  389 |     class vector : protected _Vector_base<_Tp, _Alloc>
      |           ^~~~~~
In file included from souvenirs.h:2,
                 from souvenirs.cpp:1:
/usr/include/c++/11/vector:86:13: note:   'std::pmr::vector'
   86 |       using vector = std::vector<_Tp, polymorphic_allocator<_Tp>>;
      |             ^~~~~~
souvenirs.cpp:10:1: error: 'pair' does not name a type
   10 | pair <vector <int>, int> transaction(int m){
      | ^~~~
souvenirs.cpp: In function 'void buy_souvenirs(int, int)':
souvenirs.cpp:26:12: error: 'set' was not declared in this scope
   26 |     vector<set<int>> depend(n);
      |            ^~~
souvenirs.cpp:26:12: note: suggested alternatives:
In file included from /usr/include/c++/11/set:61,
                 from /usr/include/x86_64-linux-gnu/c++/11/bits/stdc++.h:87,
                 from souvenirs.cpp:4:
/usr/include/c++/11/bits/stl_set.h:94:11: note:   'std::set'
   94 |     class set
      |           ^~~
In file included from /usr/include/x86_64-linux-gnu/c++/11/bits/stdc++.h:87,
                 from souvenirs.cpp:4:
/usr/include/c++/11/set:78:13: note:   'std::pmr::set'
   78 |       using set = std::set<_Key, _Cmp, polymorphic_allocator<_Key>>;
      |             ^~~
souvenirs.cpp:26:5: error: 'vector' was not declared in this scope
   26 |     vector<set<int>> depend(n);
      |     ^~~~~~
souvenirs.cpp:26:5: note: suggested alternatives:
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:389:11: note:   'std::vector'
  389 |     class vector : protected _Vector_base<_Tp, _Alloc>
      |           ^~~~~~
In file included from souvenirs.h:2,
                 from souvenirs.cpp:1:
/usr/include/c++/11/vector:86:13: note:   'std::pmr::vector'
   86 |       using vector = std::vector<_Tp, polymorphic_allocator<_Tp>>;
      |             ^~~~~~
souvenirs.cpp:26:16: error: expected primary-expression before 'int'
   26 |     vector<set<int>> depend(n);
      |                ^~~
souvenirs.cpp:27:12: error: expected primary-expression before 'int'
   27 |     vector<int> sum(n);
      |            ^~~
souvenirs.cpp:28:12: error: expected primary-expression before 'int'
   28 |     vector<int> ans(n, -1);
      |            ^~~
souvenirs.cpp:29:5: error: 'ans' was not declared in this scope; did you mean 'abs'?
   29 |     ans[0] = p0;
      |     ^~~
      |     abs
souvenirs.cpp:31:13: error: expected primary-expression before 'int'
   31 |     vector <int> counter(n, 0);
      |             ^~~
souvenirs.cpp:49:22: error: expected primary-expression before 'int'
   49 |                 set <int> ss;
      |                      ^~~
souvenirs.cpp:50:35: error: 'ss' was not declared in this scope
   50 |                 for (auto x : vv) ss.insert(x), counter[x]++;
      |                                   ^~
souvenirs.cpp:54:41: error: 'ss' was not declared in this scope
   54 |                     if (ans[j] != -1 && ss.count(j)){
      |                                         ^~
souvenirs.cpp:60:17: error: 'depend' was not declared in this scope
   60 |                 depend[i + 1] = ss;
      |                 ^~~~~~
souvenirs.cpp:60:33: error: 'ss' was not declared in this scope
   60 |                 depend[i + 1] = ss;
      |                                 ^~
souvenirs.cpp:61:17: error: 'sum' was not declared in this scope
   61 |                 sum[i + 1] = got;
      |                 ^~~
souvenirs.cpp:64:17: error: 'depend' was not declared in this scope
   64 |             if (depend[i].size() == 1){
      |                 ^~~~~~
souvenirs.cpp:65:26: error: 'sum' was not declared in this scope
   65 |                 ans[i] = sum[i];
      |                          ^~~
souvenirs.cpp:76:17: error: 'depend' was not declared in this scope
   76 |             if (depend[i].size()){
      |                 ^~~~~~
souvenirs.cpp:77:25: error: 'sum' was not declared in this scope
   77 |                 int x = sum[i] / (int)depend[i].size();
      |                         ^~~
souvenirs.cpp:79:22: error: expected primary-expression before 'int'
   79 |                 set <int> ss;
      |                      ^~~
souvenirs.cpp:80:35: error: 'ss' was not declared in this scope
   80 |                 for (auto x : vv) ss.insert(x), counter[x]++;
      |                                   ^~
souvenirs.cpp:85:41: error: 'ss' was not declared in this scope
   85 |                     if (ans[j] != -1 && ss.count(j)){
      |                                         ^~
In file included from /usr/include/c++/11/cassert:44,
                 from /usr/include/x86_64-linux-gnu/c++/11/bits/stdc++.h:33,
                 from souvenirs.cpp:4:
souvenirs.cpp:91:25: error: 'ss' was not declared in this scope
   91 |                 assert(!ss.empty());
      |                         ^~