Submission #1127279

#TimeUsernameProblemLanguageResultExecution timeMemory
1127279psm9352Cyberland (APIO23_cyberland)C++20
Compilation error
0 ms0 KiB
#include <vector> #include <queue> using namespace std; template <typename T> using min_heap = priority_queue<T,vector<T>,greater<T>>; double solve(int n, int m, int k, int h, vector<int> x, vector<int>y, vector<int> c, vector<int> arr){ k = min(k,69); vector<vector<double>> ans(k+1,vector<double>(n,1e18)); vector<vector<pair<int,double>>> graph(n); for (int i = 0;i < m;i++){ graph[x[i]].push_back({y[i],c[i]}); graph[y[i]].push_back({x[i],c[i]}); } min_heap<tuple<int,double,int>> pq; pq.push({0,0,0}); vector<bool> visited(n,0); queue<int> q;q.push(0); while (!q.empty()){ int node = q.front();q.pop(); if (visited[node]){continue;} visited[node]=1; for (auto [next,weight]:graph[node]){if(next==h)continue;q.push(next);} } for (int i = 1;i<n;i++){if (arr[i]==0 and visited[i]){pq.push({0,0,i});}} for (int i = 0;i<=k;i++){ ans[i][0]=0; for (int node = 1;node < n;node++){ if (arr[node]==0 and visited[node]){ans[i][node]=0;} } } while(!pq.empty()){ const auto &[ck,cdist,node] = pq.top();pq.pop(); if (arr[node]==h){return ans[ck][node];} if (ans[ck][node] < cdist){continue;} for (const auto &[next,weight]:graph[node]){ if (arr[next]==1){ if (cdist+weight < ans[ck][next]){ ans[ck][next]=cdist+weight; pq.push({ck,cdist+weight,next}); } }else{ if (ck < k and (cdist+weight)/2 < ans[ck][next]){ ans[ck][next]=(cdist+weight)/2; pq.push({ck+1,(cdist+weight)/2,next}); } } } } double fans = 1e18; for (int i = 0;i<=k;i++){ fans = min(fans,ans[i][h]); } if (fans>=1e18){return -1;} return fans; }

Compilation message (stderr)

cyberland.cpp: In function 'double solve(int, int, int, int, std::vector<int>, std::vector<int>, std::vector<int>, std::vector<int>)':
cyberland.cpp:18:12: error: no matching function for call to 'std::priority_queue<std::tuple<int, double, int>, std::vector<std::tuple<int, double, int>, std::allocator<std::tuple<int, double, int> > >, std::greater<std::tuple<int, double, int> > >::push(<brace-enclosed initializer list>)'
   18 |     pq.push({0,0,0});
      |     ~~~~~~~^~~~~~~~~
In file included from /usr/include/c++/11/queue:64,
                 from cyberland.cpp:2:
/usr/include/c++/11/bits/stl_queue.h:640:7: note: candidate: 'void std::priority_queue<_Tp, _Sequence, _Compare>::push(const value_type&) [with _Tp = std::tuple<int, double, int>; _Sequence = std::vector<std::tuple<int, double, int>, std::allocator<std::tuple<int, double, int> > >; _Compare = std::greater<std::tuple<int, double, int> >; std::priority_queue<_Tp, _Sequence, _Compare>::value_type = std::tuple<int, double, int>]'
  640 |       push(const value_type& __x)
      |       ^~~~
/usr/include/c++/11/bits/stl_queue.h:640:30: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'const value_type&' {aka 'const std::tuple<int, double, int>&'}
  640 |       push(const value_type& __x)
      |            ~~~~~~~~~~~~~~~~~~^~~
/usr/include/c++/11/bits/stl_queue.h:648:7: note: candidate: 'void std::priority_queue<_Tp, _Sequence, _Compare>::push(std::priority_queue<_Tp, _Sequence, _Compare>::value_type&&) [with _Tp = std::tuple<int, double, int>; _Sequence = std::vector<std::tuple<int, double, int>, std::allocator<std::tuple<int, double, int> > >; _Compare = std::greater<std::tuple<int, double, int> >; std::priority_queue<_Tp, _Sequence, _Compare>::value_type = std::tuple<int, double, int>]'
  648 |       push(value_type&& __x)
      |       ^~~~
/usr/include/c++/11/bits/stl_queue.h:648:25: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'std::priority_queue<std::tuple<int, double, int>, std::vector<std::tuple<int, double, int>, std::allocator<std::tuple<int, double, int> > >, std::greater<std::tuple<int, double, int> > >::value_type&&' {aka 'std::tuple<int, double, int>&&'}
  648 |       push(value_type&& __x)
      |            ~~~~~~~~~~~~~^~~
cyberland.cpp:27:66: error: no matching function for call to 'std::priority_queue<std::tuple<int, double, int>, std::vector<std::tuple<int, double, int>, std::allocator<std::tuple<int, double, int> > >, std::greater<std::tuple<int, double, int> > >::push(<brace-enclosed initializer list>)'
   27 |     for (int i = 1;i<n;i++){if (arr[i]==0 and visited[i]){pq.push({0,0,i});}}
      |                                                           ~~~~~~~^~~~~~~~~
In file included from /usr/include/c++/11/queue:64,
                 from cyberland.cpp:2:
/usr/include/c++/11/bits/stl_queue.h:640:7: note: candidate: 'void std::priority_queue<_Tp, _Sequence, _Compare>::push(const value_type&) [with _Tp = std::tuple<int, double, int>; _Sequence = std::vector<std::tuple<int, double, int>, std::allocator<std::tuple<int, double, int> > >; _Compare = std::greater<std::tuple<int, double, int> >; std::priority_queue<_Tp, _Sequence, _Compare>::value_type = std::tuple<int, double, int>]'
  640 |       push(const value_type& __x)
      |       ^~~~
/usr/include/c++/11/bits/stl_queue.h:640:30: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'const value_type&' {aka 'const std::tuple<int, double, int>&'}
  640 |       push(const value_type& __x)
      |            ~~~~~~~~~~~~~~~~~~^~~
/usr/include/c++/11/bits/stl_queue.h:648:7: note: candidate: 'void std::priority_queue<_Tp, _Sequence, _Compare>::push(std::priority_queue<_Tp, _Sequence, _Compare>::value_type&&) [with _Tp = std::tuple<int, double, int>; _Sequence = std::vector<std::tuple<int, double, int>, std::allocator<std::tuple<int, double, int> > >; _Compare = std::greater<std::tuple<int, double, int> >; std::priority_queue<_Tp, _Sequence, _Compare>::value_type = std::tuple<int, double, int>]'
  648 |       push(value_type&& __x)
      |       ^~~~
/usr/include/c++/11/bits/stl_queue.h:648:25: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'std::priority_queue<std::tuple<int, double, int>, std::vector<std::tuple<int, double, int>, std::allocator<std::tuple<int, double, int> > >, std::greater<std::tuple<int, double, int> > >::value_type&&' {aka 'std::tuple<int, double, int>&&'}
  648 |       push(value_type&& __x)
      |            ~~~~~~~~~~~~~^~~
cyberland.cpp:35:21: error: structured binding refers to incomplete type 'const std::tuple<int, double, int>'
   35 |         const auto &[ck,cdist,node] = pq.top();pq.pop();
      |                     ^~~~~~~~~~~~~~~
cyberland.cpp:42:28: error: no matching function for call to 'std::priority_queue<std::tuple<int, double, int>, std::vector<std::tuple<int, double, int>, std::allocator<std::tuple<int, double, int> > >, std::greater<std::tuple<int, double, int> > >::push(<brace-enclosed initializer list>)'
   42 |                     pq.push({ck,cdist+weight,next});
      |                     ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~
In file included from /usr/include/c++/11/queue:64,
                 from cyberland.cpp:2:
/usr/include/c++/11/bits/stl_queue.h:640:7: note: candidate: 'void std::priority_queue<_Tp, _Sequence, _Compare>::push(const value_type&) [with _Tp = std::tuple<int, double, int>; _Sequence = std::vector<std::tuple<int, double, int>, std::allocator<std::tuple<int, double, int> > >; _Compare = std::greater<std::tuple<int, double, int> >; std::priority_queue<_Tp, _Sequence, _Compare>::value_type = std::tuple<int, double, int>]'
  640 |       push(const value_type& __x)
      |       ^~~~
/usr/include/c++/11/bits/stl_queue.h:640:30: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'const value_type&' {aka 'const std::tuple<int, double, int>&'}
  640 |       push(const value_type& __x)
      |            ~~~~~~~~~~~~~~~~~~^~~
/usr/include/c++/11/bits/stl_queue.h:648:7: note: candidate: 'void std::priority_queue<_Tp, _Sequence, _Compare>::push(std::priority_queue<_Tp, _Sequence, _Compare>::value_type&&) [with _Tp = std::tuple<int, double, int>; _Sequence = std::vector<std::tuple<int, double, int>, std::allocator<std::tuple<int, double, int> > >; _Compare = std::greater<std::tuple<int, double, int> >; std::priority_queue<_Tp, _Sequence, _Compare>::value_type = std::tuple<int, double, int>]'
  648 |       push(value_type&& __x)
      |       ^~~~
/usr/include/c++/11/bits/stl_queue.h:648:25: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'std::priority_queue<std::tuple<int, double, int>, std::vector<std::tuple<int, double, int>, std::allocator<std::tuple<int, double, int> > >, std::greater<std::tuple<int, double, int> > >::value_type&&' {aka 'std::tuple<int, double, int>&&'}
  648 |       push(value_type&& __x)
      |            ~~~~~~~~~~~~~^~~
cyberland.cpp:47:28: error: no matching function for call to 'std::priority_queue<std::tuple<int, double, int>, std::vector<std::tuple<int, double, int>, std::allocator<std::tuple<int, double, int> > >, std::greater<std::tuple<int, double, int> > >::push(<brace-enclosed initializer list>)'
   47 |                     pq.push({ck+1,(cdist+weight)/2,next});
      |                     ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from /usr/include/c++/11/queue:64,
                 from cyberland.cpp:2:
/usr/include/c++/11/bits/stl_queue.h:640:7: note: candidate: 'void std::priority_queue<_Tp, _Sequence, _Compare>::push(const value_type&) [with _Tp = std::tuple<int, double, int>; _Sequence = std::vector<std::tuple<int, double, int>, std::allocator<std::tuple<int, double, int> > >; _Compare = std::greater<std::tuple<int, double, int> >; std::priority_queue<_Tp, _Sequence, _Compare>::value_type = std::tuple<int, double, int>]'
  640 |       push(const value_type& __x)
      |       ^~~~
/usr/include/c++/11/bits/stl_queue.h:640:30: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'const value_type&' {aka 'const std::tuple<int, double, int>&'}
  640 |       push(const value_type& __x)
      |            ~~~~~~~~~~~~~~~~~~^~~
/usr/include/c++/11/bits/stl_queue.h:648:7: note: candidate: 'void std::priority_queue<_Tp, _Sequence, _Compare>::push(std::priority_queue<_Tp, _Sequence, _Compare>::value_type&&) [with _Tp = std::tuple<int, double, int>; _Sequence = std::vector<std::tuple<int, double, int>, std::allocator<std::tuple<int, double, int> > >; _Compare = std::greater<std::tuple<int, double, int> >; std::priority_queue<_Tp, _Sequence, _Compare>::value_type = std::tuple<int, double, int>]'
  648 |       push(value_type&& __x)
      |       ^~~~
/usr/include/c++/11/bits/stl_queue.h:648:25: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'std::priority_queue<std::tuple<int, double, int>, std::vector<std::tuple<int, double, int>, std::allocator<std::tuple<int, double, int> > >, std::greater<std::tuple<int, double, int> > >::value_type&&' {aka 'std::tuple<int, double, int>&&'}
  648 |       push(value_type&& __x)
      |            ~~~~~~~~~~~~~^~~
In file included from /usr/include/c++/11/vector:67,
                 from cyberland.cpp:1:
/usr/include/c++/11/bits/stl_vector.h: In instantiation of 'std::_Vector_base<_Tp, _Alloc>::~_Vector_base() [with _Tp = std::tuple<int, double, int>; _Alloc = std::allocator<std::tuple<int, double, int> >]':
/usr/include/c++/11/bits/stl_vector.h:487:7:   required from 'std::priority_queue<_Tp, _Sequence, _Compare>::priority_queue() [with _Seq = std::vector<std::tuple<int, double, int>, std::allocator<std::tuple<int, double, int> > >; _Requires = void; _Tp = std::tuple<int, double, int>; _Sequence = std::vector<std::tuple<int, double, int>, std::allocator<std::tuple<int, double, int> > >; _Compare = std::greater<std::tuple<int, double, int> >]'
cyberland.cpp:17:37:   required from here
/usr/include/c++/11/bits/stl_vector.h:336:49: error: invalid use of incomplete type 'class std::tuple<int, double, int>'
  336 |                       _M_impl._M_end_of_storage - _M_impl._M_start);
      |                       ~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~
In file included from /usr/include/c++/11/bits/move.h:57,
                 from /usr/include/c++/11/bits/stl_pair.h:59,
                 from /usr/include/c++/11/bits/stl_algobase.h:64,
                 from /usr/include/c++/11/vector:60,
                 from cyberland.cpp:1:
/usr/include/c++/11/type_traits:45:11: note: declaration of 'class std::tuple<int, double, int>'
   45 |     class tuple;
      |           ^~~~~
In file included from /usr/include/c++/11/bits/stl_algobase.h:67,
                 from /usr/include/c++/11/vector:60,
                 from cyberland.cpp:1:
/usr/include/c++/11/bits/stl_iterator.h: In instantiation of 'constexpr typename __gnu_cxx::__normal_iterator<_Iterator, _Container>::difference_type __gnu_cxx::operator-(const __gnu_cxx::__normal_iterator<_Iterator, _Container>&, const __gnu_cxx::__normal_iterator<_Iterator, _Container>&) [with _Iterator = std::tuple<int, double, int>*; _Container = std::vector<std::tuple<int, double, int>, std::allocator<std::tuple<int, double, int> > >; typename __gnu_cxx::__normal_iterator<_Iterator, _Container>::difference_type = long int]':
/usr/include/c++/11/bits/stl_heap.h:327:18:   required from 'constexpr void std::pop_heap(_RAIter, _RAIter, _Compare) [with _RAIter = __gnu_cxx::__normal_iterator<std::tuple<int, double, int>*, std::vector<std::tuple<int, double, int>, std::allocator<std::tuple<int, double, int> > > >; _Compare = std::greater<std::tuple<int, double, int> >]'
/usr/include/c++/11/bits/stl_queue.h:678:15:   required from 'void std::priority_queue<_Tp, _Sequence, _Compare>::pop() [with _Tp = std::tuple<int, double, int>; _Sequence = std::vector<std::tuple<int, double, int>, std::allocator<std::tuple<int, double, int> > >; _Compare = std::greater<std::tuple<int, double, int> >]'
cyberland.cpp:35:54:   required from here
/usr/include/c++/11/bits/stl_iterator.h:1271:27: error: invalid use of incomplete type 'class std::tuple<int, double, int>'
 1271 |     { return __lhs.base() - __rhs.base(); }
      |              ~~~~~~~~~~~~~^~~~~~~~~~~~~~
In file included from /usr/include/c++/11/bits/move.h:57,
                 from /usr/include/c++/11/bits/stl_pair.h:59,
                 from /usr/include/c++/11/bits/stl_algobase.h:64,
                 from /usr/include/c++/11/vector:60,
                 from cyberland.cpp:1:
/usr/include/c++/11/type_traits:45:11: note: declaration of 'class std::tuple<int, double, int>'
   45 |     class tuple;
      |           ^~~~~
In file included from /usr/include/c++/11/bits/stl_algobase.h:67,
                 from /usr/include/c++/11/vector:60,
                 from cyberland.cpp:1:
/usr/include/c++/11/bits/stl_iterator.h: In instantiation of 'constexpr __gnu_cxx::__normal_iterator<_Iterator, _Container>& __gnu_cxx::__normal_iterator<_Iterator, _Container>::operator--() [with _Iterator = std::tuple<int, double, int>*; _Container = std::vector<std::tuple<int, double, int>, std::allocator<std::tuple<int, double, int> > >]':
/usr/include/c++/11/bits/stl_heap.h:331:4:   required from 'constexpr void std::pop_heap(_RAIter, _RAIter, _Compare) [with _RAIter = __gnu_cxx::__normal_iterator<std::tuple<int, double, int>*, std::vector<std::tuple<int, double, int>, std::allocator<std::tuple<int, double, int> > > >; _Compare = std::greater<std::tuple<int, double, int> >]'
/usr/include/c++/11/bits/stl_queue.h:678:15:   required from 'void std::priority_queue<_Tp, _Sequence, _Compare>::pop() [with _Tp = std::tuple<int, double, int>; _Sequence = std::vector<std::tuple<int, double, int>, std::allocator<std::tuple<int, double, int> > >; _Compare = std::greater<std::tuple<int, double, int> >]'
cyberland.cpp:35:54:   required from here
/usr/include/c++/11/bits/stl_iterator.h:1068:11: error: cannot decrement a pointer to incomplete type 'std::tuple<int, double, int>'
 1068 |         --_M_current;
      |           ^~~~~~~~~~
In file included from /usr/include/c++/11/vector:67,
                 from cyberland.cpp:1:
/usr/include/c++/11/bits/stl_vector.h: In instantiation of 'void std::vector<_Tp, _Alloc>::pop_back() [with _Tp = std::tuple<int, double, int>; _Alloc = std::allocator<std::tuple<int, double, int> >]':
/usr/include/c++/11/bits/stl_queue.h:679:12:   required from 'void std::priority_queue<_Tp, _Sequence, _Compare>::pop() [with _Tp = std::tuple<int, double, int>; _Sequence = std::vector<std::tuple<int, double, int>, std::allocator<std::tuple<int, double, int> > >; _Compare = std::greater<std::tuple<int, double, int> >]'
cyberland.cpp:35:54:   required from here
/usr/include/c++/11/bits/stl_vector.h:1228:25: error: cannot decrement a pointer to incomplete type 'std::tuple<int, double, int>'
 1228 |         --this->_M_impl._M_finish;
      |           ~~~~~~~~~~~~~~^~~~~~~~~
In file included from /usr/include/c++/11/bits/move.h:57,
                 from /usr/include/c++/11/bits/stl_pair.h:59,
                 from /usr/include/c++/11/bits/stl_algobase.h:64,
                 from /usr/include/c++/11/vector:60,
                 from cyberland.cpp:1:
/usr/include/c++/11/type_traits: In instantiation of 'struct std::is_nothrow_destructible<std::tuple<int, double, int> >':
/usr/include/c++/11/bits/alloc_traits.h:532:41:   required from 'static constexpr void std::allocator_traits<std::allocator<_Up> >::destroy(std::allocator_traits<std::allocator<_Up> >::allocator_type&, _Up*) [with _Up = std::tuple<int, double, int>; _Tp = std::tuple<int, double, int>; std::allocator_traits<std::allocator<_Up> >::allocator_type = std::allocator<std::tuple<int, double, int> >]'
/usr/include/c++/11/bits/stl_vector.h:1229:24:   required from 'void std::vector<_Tp, _Alloc>::pop_back() [with _Tp = std::tuple<int, double, int>; _Alloc = std::allocator<std::tuple<int, double, int> >]'
/usr/include/c++/11/bits/stl_queue.h:679:12:   required from 'void std::priority_queue<_Tp, _Sequence, _Compare>::pop() [with _Tp = std::tuple<int, double, int>; _Sequence = std::vector<std::tuple<int, double, int>, std::allocator<std::tuple<int, double, int> > >; _Compare = std::greater<std::tuple<int, double, int> >]'
cyberland.cpp:35:54:   required from here
/usr/include/c++/11/type_traits:939:52: error: static assertion failed: template argument must be a complete class or an unbounded array
  939 |       static_assert(std::__is_complete_or_unbounded(__type_identity<_Tp>{}),
      |                     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/c++/11/type_traits:939:52: note: 'std::__is_complete_or_unbounded<std::__type_identity<std::tuple<int, double, int> > >((std::__type_identity<std::tuple<int, double, int> >{}, std::__type_identity<std::tuple<int, double, int> >()))' evaluates to false
/usr/include/c++/11/type_traits: In instantiation of 'struct std::is_destructible<std::tuple<int, double, int> >':
/usr/include/c++/11/bits/stl_construct.h:188:51:   required from 'constexpr void std::_Destroy(_ForwardIterator, _ForwardIterator) [with _ForwardIterator = std::tuple<int, double, int>*]'
/usr/include/c++/11/bits/alloc_traits.h:848:15:   required from 'void std::_Destroy(_ForwardIterator, _ForwardIterator, std::allocator<_T2>&) [with _ForwardIterator = std::tuple<int, double, int>*; _Tp = std::tuple<int, double, int>]'
/usr/include/c++/11/bits/stl_vector.h:680:15:   required from 'std::vector<_Tp, _Alloc>::~vector() [with _Tp = std::tuple<int, double, int>; _Alloc = std::allocator<std::tuple<int, double, int> >]'
/usr/include/c++/11/bits/stl_queue.h:456:11:   required from here
/usr/include/c++/11/type_traits:885:52: error: static assertion failed: template argument must be a complete class or an unbounded array
  885 |       static_assert(std::__is_complete_or_unbounded(__type_identity<_Tp>{}),
      |                     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/c++/11/type_traits:885:52: note: 'std::__is_complete_or_unbounded<std::__type_identity<std::tuple<int, double, int> > >((std::__type_identity<std::tuple<int, double, int> >{}, std::__type_identity<std::tuple<int, double, int> >()))' evaluates to false
In file included from /usr/include/c++/11/bits/stl_iterator.h:85,
                 from /usr/include/c++/11/bits/stl_algobase.h:67,
                 from /usr/include/c++/11/vector:60,
                 from cyberland.cpp:1:
/usr/include/c++/11/bits/stl_construct.h: In instantiation of 'constexpr void std::_Destroy(_ForwardIterator, _ForwardIterator) [with _ForwardIterator = std::tuple<int, double, int>*]':
/usr/include/c++/11/bits/alloc_traits.h:848:15:   required from 'void std::_Destroy(_ForwardIterator, _ForwardIterator, std::allocator<_T2>&) [with _ForwardIterator = std::tuple<int, double, int>*; _Tp = std::tuple<int, double, int>]'
/usr/include/c++/11/bits/stl_vector.h:680:15:   required from 'std::vector<_Tp, _Alloc>::~vector() [with _Tp = std::tuple<int, double, int>; _Alloc = std::allocator<std::tuple<int, double, int> >]'
/usr/include/c++/11/bits/stl_queue.h:456:11:   required from here
/usr/include/c++/11/bits/stl_construct.h:188:51: error: static assertion failed: value type is destructible
  188 |       static_assert(is_destructible<_Value_type>::value,
      |                                                   ^~~~~
/usr/include/c++/11/bits/stl_construct.h:188:51: note: 'std::integral_constant<bool, false>::value' evaluates to false
/usr/include/c++/11/bits/stl_construct.h:195:25: error: invalid use of incomplete type 'using value_type = std::remove_cv_t<std::tuple<int, double, int> >' {aka 'class std::tuple<int, double, int>'}
  195 |       std::_Destroy_aux<__has_trivial_destructor(_Value_type)>::
      |                         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from /usr/include/c++/11/bits/move.h:57,
                 from /usr/include/c++/11/bits/stl_pair.h:59,
                 from /usr/include/c++/11/bits/stl_algobase.h:64,
                 from /usr/include/c++/11/vector:60,
                 from cyberland.cpp:1:
/usr/include/c++/11/type_traits:45:11: note: declaration of 'using value_type = std::remove_cv_t<std::tuple<int, double, int> >' {aka 'class std::tuple<int, double, int>'}
   45 |     class tuple;
      |           ^~~~~
In file included from /usr/include/c++/11/bits/stl_algo.h:61,
                 from /usr/include/c++/11/vector:62,
                 from cyberland.cpp:1:
/usr/include/c++/11/bits/stl_heap.h: In instantiation of 'constexpr void std::__pop_heap(_RandomAccessIterator, _RandomAccessIterator, _RandomAccessIterator, _Compare&) [with _RandomAccessIterator = __gnu_cxx::__normal_iterator<std::tuple<int, double, int>*, std::vector<std::tuple<int, double, int>, std::allocator<std::tuple<int, double, int> > > >; _Compare = __gnu_cxx::__ops::_Iter_comp_iter<std::greater<std::tuple<int, double, int> > >]':
/usr/include/c++/11/bits/stl_heap.h:332:19:   required from 'constexpr void std::pop_heap(_RAIter, _RAIter, _Compare) [with _RAIter = __gnu_cxx::__normal_iterator<std::tuple<int, double, int>*, std::vector<std::tuple<int, double, int>, std::allocator<std::tuple<int, double, int> > > >; _Compare = std::greater<std::tuple<int, double, int> >]'
/usr/include/c++/11/bits/stl_queue.h:678:15:   required from 'void std::priority_queue<_Tp, _Sequence, _Compare>::pop() [with _Tp = std::tuple<int, double, int>; _Sequence = std::vector<std::tuple<int, double, int>, std::allocator<std::tuple<int, double, int> > >; _Compare = std::greater<std::tuple<int, double, int> >]'
cyberland.cpp:35:54:   required from here
/usr/include/c++/11/bits/stl_heap.h:261:18: error: '_ValueType __value' has incomplete type
  261 |       _ValueType __value = _GLIBCXX_MOVE(*__result);
      |                  ^~~~~~~
/usr/include/c++/11/bits/stl_heap.h:262:17: error: invalid use of incomplete type 'class std::tuple<int, double, int>'
  262 |       *__result = _GLIBCXX_MOVE(*__first);
      |                 ^
In file included from /usr/include/c++/11/bits/move.h:57,
                 from /usr/include/c++/11/bits/stl_pair.h:59,
                 from /usr/include/c++/11/bits/stl_algobase.h:64,
                 from /usr/include/c++/11/vector:60,
                 from cyberland.cpp:1:
/usr/include/c++/11/type_traits:45:11: note: declaration of 'class std::tuple<int, double, int>'
   45 |     class tuple;
      |           ^~~~~
In file included from /usr/include/c++/11/bits/stl_iterator.h:85,
                 from /usr/include/c++/11/bits/stl_algobase.h:67,
                 from /usr/include/c++/11/vector:60,
                 from cyberland.cpp:1:
/usr/include/c++/11/bits/stl_construct.h: In instantiation of 'static constexpr void std::_Destroy_aux<<anonymous> >::__destroy(_ForwardIterator, _ForwardIterator) [with _ForwardIterator = std::tuple<int, double, int>*; bool <anonymous> = false]':
/usr/include/c++/11/bits/stl_construct.h:193:39:   required from 'constexpr void std::_Destroy(_ForwardIterator, _ForwardIterator) [with _ForwardIterator = std::tuple<int, double, int>*]'
/usr/include/c++/11/bits/alloc_traits.h:848:15:   required from 'void std::_Destroy(_ForwardIterator, _ForwardIterator, std::allocator<_T2>&) [with _ForwardIterator = std::tuple<int, double, int>*; _Tp = std::tuple<int, double, int>]'
/usr/include/c++/11/bits/stl_vector.h:680:15:   required from 'std::vector<_Tp, _Alloc>::~vector() [with _Tp = std::tuple<int, double, int>; _Alloc = std::allocator<std::tuple<int, double, int> >]'
/usr/include/c++/11/bits/stl_queue.h:456:11:   required from here
/usr/include/c++/11/bits/stl_construct.h:162:39: error: cannot increment a pointer to incomplete type 'std::tuple<int, double, int>'
  162 |           for (; __first != __last; ++__first)
      |                                       ^~~~~~~
/usr/include/c++/11/bits/stl_construct.h: In instantiation of 'constexpr void std::destroy_at(_Tp*) [with _Tp = std::tuple<int, double, int>]':
/usr/include/c++/11/bits/alloc_traits.h:537:19:   required from 'static constexpr void std::allocator_traits<std::allocator<_Up> >::destroy(std::allocator_traits<std::allocator<_Up> >::allocator_type&, _Up*) [with _Up = std::tuple<int, double, int>; _Tp = std::tuple<int, double, int>; std::allocator_traits<std::allocator<_Up> >::allocator_type = std::allocator<std::tuple<int, double, int> >]'
/usr/include/c++/11/bits/stl_vector.h:1229:24:   required from 'void std::vector<_Tp, _Alloc>::pop_back() [with _Tp = std::tuple<int, double, int>; _Alloc = std::allocator<std::tuple<int, double, int> >]'
/usr/include/c++/11/bits/stl_queue.h:679:12:   required from 'void std::priority_queue<_Tp, _Sequence, _Compare>::pop() [with _Tp = std::tuple<int, double, int>; _Sequence = std::vector<std::tuple<int, double, int>, std::allocator<std::tuple<int, double, int> > >; _Compare = std::greater<std::tuple<int, double, int> >]'
cyberland.cpp:35:54:   required from here
/usr/include/c++/11/bits/stl_construct.h:88:22: error: invalid use of incomplete type 'class std::tuple<int, double, int>'
   88 |         __location->~_Tp();
      |         ~~~~~~~~~~~~~^~~
In file included from /usr/include/c++/11/bits/move.h:57,
                 from /usr/include/c++/11/bits/stl_pair.h:59,
                 from /usr/include/c++/11/bits/stl_algobase.h:64,
                 from /usr/include/c++/11/vector:60,
                 from cyberland.cpp:1:
/usr/include/c++/11/type_traits:45:11: note: declaration of 'class std::tuple<int, double, int>'
   45 |     class tuple;
      |           ^~~~~