# | Time | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
873580 | sleepntsheep | 경찰관과 강도 (BOI14_coprobber) | C++17 | Compilation error | 0 ms | 0 KiB |
This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include "coprobber.h"
#include <array>
#include <queue>
#include <string.h>
int N, G[MAX_N][MAX_N][2], C[MAX_N][MAX_N][2], deg[MAX_N], at;
bool (*A)[MAX_N];
int start(int N, bool A[MAX_N][MAX_N])
{
::N = N, ::A = A;
memset(G, -1, sizeof G);
std::queue<std::tuple<int, int, int, int>> q;
for (int i = 0; i < N; ++i) G[i][i][0] = G[i][i][1] = 0, q.emplace(i, i, 0, 0), q.emplace(i, i, 1, 0);
for (int i = 0; i < N; ++i) for (int j = 0; j < N; ++j) deg[i] += A[i][j];
for (; q.size(); )
{
auto [u, v, t, g] = q.front();
q.pop();
if (t) /* robber, was cop */
{
for (auto k = 0; k < N; ++k)
{
if (!A[u][k]) continue;
if (!g && G[k][v][0] == -1)
{
q.emplace(k, v, 0, G[k][v][!t] = 0);
}
else
{
}
}
}
else /* was robber */
{
for (auto k = 0; k < N; ++k)
{
if (!A[v][k]) continue;
if (!g)
{
if (++C[u][k][0] == deg[k])
{
q.emplace(u, k, !t, G[u][k][!t] = 0);
}
}
else if (G[u][k][!t] == -1)
{
q.emplace(u, k, !t, G[u][k][!t] = 1);
}
}
}
}
for (int i = 0; i < N; ++i)
{
int losing = 0;
for (int j = 0; j < N; ++j)
losing += !!G[i][j][0];
if (!losing) return at = i;
}
return -1;
}
int nextMove(int R)
{
if (!G[at][R][1]) return at;
for (int j = 0; j < N; ++j)
if (A[at][j] && !G[j][R][1]) return j;
return -1;
}
Compilation message (stderr)
coprobber.cpp: In function 'int start(int, bool (*)[500])': coprobber.cpp:19:14: error: 'std::tuple<int, int, int, int> <structured bindings>' has incomplete type 19 | auto [u, v, t, g] = q.front(); | ^~~~~~~~~~~~ In file included from /usr/include/c++/10/deque:69, from /usr/include/c++/10/queue:60, from coprobber.cpp:3: /usr/include/c++/10/bits/deque.tcc: In instantiation of 'std::deque<_Tp, _Alloc>::reference std::deque<_Tp, _Alloc>::emplace_back(_Args&& ...) [with _Args = {int&, int&, int, int}; _Tp = std::tuple<int, int, int, int>; _Alloc = std::allocator<std::tuple<int, int, int, int> >; std::deque<_Tp, _Alloc>::reference = std::tuple<int, int, int, int>&]': /usr/include/c++/10/bits/stl_queue.h:277:25: required from 'decltype(auto) std::queue<_Tp, _Sequence>::emplace(_Args&& ...) [with _Args = {int&, int&, int, int}; _Tp = std::tuple<int, int, int, int>; _Sequence = std::deque<std::tuple<int, int, int, int>, std::allocator<std::tuple<int, int, int, int> > >]' coprobber.cpp:14:82: required from here /usr/include/c++/10/bits/deque.tcc:168:41: error: invalid use of incomplete type 'class std::tuple<int, int, int, int>' 168 | != this->_M_impl._M_finish._M_last - 1) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~ In file included from /usr/include/c++/10/bits/move.h:57, from /usr/include/c++/10/bits/stl_pair.h:59, from /usr/include/c++/10/utility:70, from /usr/include/c++/10/array:38, from coprobber.cpp:2: /usr/include/c++/10/type_traits:2631:11: note: declaration of 'class std::tuple<int, int, int, int>' 2631 | class tuple; | ^~~~~ In file included from /usr/include/c++/10/deque:69, from /usr/include/c++/10/queue:60, from coprobber.cpp:3: /usr/include/c++/10/bits/deque.tcc:173:32: error: cannot increment a pointer to incomplete type 'std::tuple<int, int, int, int>' 173 | ++this->_M_impl._M_finish._M_cur; | ~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~ In file included from /usr/include/c++/10/deque:67, from /usr/include/c++/10/queue:60, from coprobber.cpp:3: /usr/include/c++/10/bits/stl_deque.h: In instantiation of 'void std::deque<_Tp, _Alloc>::_M_destroy_data(std::deque<_Tp, _Alloc>::iterator, std::deque<_Tp, _Alloc>::iterator, const std::allocator<_Tp1>&) [with _Tp = std::tuple<int, int, int, int>; _Alloc = std::allocator<std::tuple<int, int, int, int> >; std::deque<_Tp, _Alloc>::iterator = std::_Deque_base<std::tuple<int, int, int, int>, std::allocator<std::tuple<int, int, int, int> > >::iterator]': /usr/include/c++/10/bits/stl_deque.h:1004:24: required from 'std::deque<_Tp, _Alloc>::~deque() [with _Tp = std::tuple<int, int, int, int>; _Alloc = std::allocator<std::tuple<int, int, int, int> >]' /usr/include/c++/10/bits/stl_queue.h:96:11: required from here /usr/include/c++/10/bits/stl_deque.h:2045:7: error: invalid use of incomplete type 'std::deque<std::tuple<int, int, int, int>, std::allocator<std::tuple<int, int, int, int> > >::value_type' {aka 'class std::tuple<int, int, int, int>'} 2045 | if (!__has_trivial_destructor(value_type)) | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from /usr/include/c++/10/bits/move.h:57, from /usr/include/c++/10/bits/stl_pair.h:59, from /usr/include/c++/10/utility:70, from /usr/include/c++/10/array:38, from coprobber.cpp:2: /usr/include/c++/10/type_traits:2631:11: note: declaration of 'std::deque<std::tuple<int, int, int, int>, std::allocator<std::tuple<int, int, int, int> > >::value_type' {aka 'class std::tuple<int, int, int, int>'} 2631 | class tuple; | ^~~~~ In file included from /usr/include/c++/10/deque:67, from /usr/include/c++/10/queue:60, from coprobber.cpp:3: /usr/include/c++/10/bits/stl_deque.h: In instantiation of 'void std::deque<_Tp, _Alloc>::pop_front() [with _Tp = std::tuple<int, int, int, int>; _Alloc = std::allocator<std::tuple<int, int, int, int> >]': /usr/include/c++/10/bits/stl_queue.h:301:13: required from 'void std::queue<_Tp, _Sequence>::pop() [with _Tp = std::tuple<int, int, int, int>; _Sequence = std::deque<std::tuple<int, int, int, int>, std::allocator<std::tuple<int, int, int, int> > >]' coprobber.cpp:20:15: required from here /usr/include/c++/10/bits/stl_deque.h:1533:40: error: invalid use of incomplete type 'class std::tuple<int, int, int, int>' 1533 | != this->_M_impl._M_start._M_last - 1) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~ In file included from /usr/include/c++/10/bits/move.h:57, from /usr/include/c++/10/bits/stl_pair.h:59, from /usr/include/c++/10/utility:70, from /usr/include/c++/10/array:38, from coprobber.cpp:2: /usr/include/c++/10/type_traits:2631:11: note: declaration of 'class std::tuple<int, int, int, int>' 2631 | class tuple; | ^~~~~ In file included from /usr/include/c++/10/deque:67, from /usr/include/c++/10/queue:60, from coprobber.cpp:3: /usr/include/c++/10/bits/stl_deque.h:1537:31: error: cannot increment a pointer to incomplete type 'std::tuple<int, int, int, int>' 1537 | ++this->_M_impl._M_start._M_cur; | ~~~~~~~~~~~~~~~~~~~~~~~^~~~~~ /usr/include/c++/10/bits/stl_deque.h: In instantiation of 'void std::_Deque_base<_Tp, _Alloc>::_M_initialize_map(std::size_t) [with _Tp = std::tuple<int, int, int, int>; _Alloc = std::allocator<std::tuple<int, int, int, int> >; std::size_t = long unsigned int]': /usr/include/c++/10/bits/stl_deque.h:436:9: required from 'std::_Deque_base<_Tp, _Alloc>::_Deque_base() [with _Tp = std::tuple<int, int, int, int>; _Alloc = std::allocator<std::tuple<int, int, int, int> >]' /usr/include/c++/10/bits/stl_deque.h:831:7: required from 'std::queue<_Tp, _Sequence>::queue() [with _Seq = std::deque<std::tuple<int, int, int, int>, std::allocator<std::tuple<int, int, int, int> > >; _Requires = void; _Tp = std::tuple<int, int, int, int>; _Sequence = std::deque<std::tuple<int, int, int, int>, std::allocator<std::tuple<int, int, int, int> > >]' coprobber.cpp:13:48: required from here /usr/include/c++/10/bits/stl_deque.h:617:69: error: invalid application of 'sizeof' to incomplete type 'std::tuple<int, int, int, int>' 617 | const size_t __num_nodes = (__num_elements / __deque_buf_size(sizeof(_Tp)) | ^~~~~~~~~~~ /usr/include/c++/10/bits/stl_deque.h:648:25: error: invalid application of 'sizeof' to incomplete type 'std::tuple<int, int, int, int>' 648 | % __deque_buf_size(sizeof(_Tp))); | ^~~~~~~~~~~ /usr/include/c++/10/bits/stl_deque.h: In instantiation of 'std::_Deque_iterator<std::tuple<int, int, int, int>, std::tuple<int, int, int, int>&, std::tuple<int, int, int, int>*>::difference_type std::operator-(const _Self&, const _Self&)': /usr/include/c++/10/bits/stl_deque.h:1231:40: required from 'std::deque<_Tp, _Alloc>::size_type std::deque<_Tp, _Alloc>::size() const [with _Tp = std::tuple<int, int, int, int>; _Alloc = std::allocator<std::tuple<int, int, int, int> >; std::deque<_Tp, _Alloc>::size_type = long unsigned int]' /usr/include/c++/10/bits/stl_queue.h:209:22: required from 'std::queue<_Tp, _Sequence>::size_type std::queue<_Tp, _Sequence>::size() const [with _Tp = std::tuple<int, int, int, int>; _Sequence = std::deque<std::tuple<int, int, int, int>, std::allocator<std::tuple<int, int, int, int> > >; std::queue<_Tp, _Sequence>::size_type = long unsigned int]' coprobber.cpp:17:19: required from here /usr/include/c++/10/bits/stl_deque.h:356:52: error: invalid use of incomplete type 'class std::tuple<int, int, int, int>' 356 | * (__x._M_node - __y._M_node - 1) + (__x._M_cur - __x._M_first) | ~~~~~~~~~~~~^~~~~~~~~~~~~~~ In file included from /usr/include/c++/10/bits/move.h:57, from /usr/include/c++/10/bits/stl_pair.h:59, from /usr/include/c++/10/utility:70, from /usr/include/c++/10/array:38, from coprobber.cpp:2: /usr/include/c++/10/type_traits:2631:11: note: declaration of 'class std::tuple<int, int, int, int>' 2631 | class tuple; | ^~~~~ In file included from /usr/include/c++/10/deque:67, from /usr/include/c++/10/queue:60, from coprobber.cpp:3: /usr/include/c++/10/bits/stl_deque.h:357:19: error: invalid use of incomplete type 'class std::tuple<int, int, int, int>' 357 | + (__y._M_last - __y._M_cur); | ~~~~~~~~~~~~~^~~~~~~~~~~~~ In file included from /usr/include/c++/10/bits/move.h:57, from /usr/include/c++/10/bits/stl_pair.h:59, from /usr/include/c++/10/utility:70, from /usr/include/c++/10/array:38, from coprobber.cpp:2: /usr/include/c++/10/type_traits:2631:11: note: declaration of 'class std::tuple<int, int, int, int>' 2631 | class tuple; | ^~~~~ In file included from /usr/include/c++/10/deque:67, from /usr/include/c++/10/queue:60, from coprobber.cpp:3: /usr/include/c++/10/bits/stl_deque.h: In instantiation of 'void std::_Deque_base<_Tp, _Alloc>::_M_deallocate_node(std::_Deque_base<_Tp, _Alloc>::_Ptr) [with _Tp = std::tuple<int, int, int, int>; _Alloc = std::allocator<std::tuple<int, int, int, int> >; std::_Deque_base<_Tp, _Alloc>::_Ptr = std::tuple<int, int, int, int>*]': /usr/include/c++/10/bits/stl_deque.h:676:2: required from 'void std::_Deque_base<_Tp, _Alloc>::_M_destroy_nodes(std::_Deque_base<_Tp, _Alloc>::_Map_pointer, std::_Deque_base<_Tp, _Alloc>::_Map_pointer) [with _Tp = std::tuple<int, int, int, int>; _Alloc = std::allocator<std::tuple<int, int, int, int> >; std::_Deque_base<_Tp, _Alloc>::_Map_pointer = std::tuple<int, int, int, int>**]' /usr/include/c++/10/bits/stl_deque.h:598:4: required from 'std::_Deque_base<_Tp, _Alloc>::~_Deque_base() [with _Tp = std::tuple<int, int, int, int>; _Alloc = std::allocator<std::tuple<int, int, int, int> >]' /usr/include/c++/10/bits/stl_deque.h:831:7: required from 'std::queue<_Tp, _Sequence>::queue() [with _Seq = std::deque<std::tuple<int, int, int, int>, std::allocator<std::tuple<int, int, int, int> > >; _Requires = void; _Tp = std::tuple<int, int, int, int>; _Sequence = std::deque<std::tuple<int, int, int, int>, std::allocator<std::tuple<int, int, int, int> > >]' coprobber.cpp:13:48: required from here /usr/include/c++/10/bits/stl_deque.h:566:53: error: invalid application of 'sizeof' to incomplete type 'std::tuple<int, int, int, int>' 566 | _Traits::deallocate(_M_impl, __p, __deque_buf_size(sizeof(_Tp))); | ^~~~~~~~~~~ /usr/include/c++/10/bits/stl_deque.h: In instantiation of 'static std::size_t std::_Deque_iterator<_Tp, _Ref, _Ptr>::_S_buffer_size() [with _Tp = std::tuple<int, int, int, int>; _Ref = std::tuple<int, int, int, int>&; _Ptr = std::tuple<int, int, int, int>*; std::size_t = long unsigned int]': /usr/include/c++/10/bits/stl_deque.h:355:39: required from 'std::_Deque_iterator<std::tuple<int, int, int, int>, std::tuple<int, int, int, int>&, std::tuple<int, int, int, int>*>::difference_type std::operator-(const _Self&, const _Self&)' /usr/include/c++/10/bits/stl_deque.h:1231:40: required from 'std::deque<_Tp, _Alloc>::size_type std::deque<_Tp, _Alloc>::size() const [with _Tp = std::tuple<int, int, int, int>; _Alloc = std::allocator<std::tuple<int, int, int, int> >; std::deque<_Tp, _Alloc>::size_type = long unsigned int]' /usr/include/c++/10/bits/stl_queue.h:209:22: required from 'std::queue<_Tp, _Sequence>::size_type std::queue<_Tp, _Sequence>::size() const [with _Tp = std::tuple<int, int, int, int>; _Sequence = std::deque<std::tuple<int, int, int, int>, std::allocator<std::tuple<int, int, int, int> > >; std::queue<_Tp, _Sequence>::size_type = long unsigned int]' coprobber.cpp:17:19: required from here /usr/include/c++/10/bits/stl_deque.h:132:33: error: invalid application of 'sizeof' to incomplete type 'std::tuple<int, int, int, int>' 132 | { return __deque_buf_size(sizeof(_Tp)); } | ^~~~~~~~~~~ In file included from /usr/include/x86_64-linux-gnu/c++/10/bits/c++allocator.h:33, from /usr/include/c++/10/bits/allocator.h:46, from /usr/include/c++/10/deque:64, from /usr/include/c++/10/queue:60, from coprobber.cpp:3: /usr/include/c++/10/ext/new_allocator.h: In instantiation of 'void __gnu_cxx::new_allocator<_Tp>::deallocate(_Tp*, __gnu_cxx::new_allocator<_Tp>::size_type) [with _Tp = std::tuple<int, int, int, int>; __gnu_cxx::new_allocator<_Tp>::size_type = long unsigned int]': /usr/include/c++/10/bits/alloc_traits.h:492:23: required from 'static void std::allocator_traits<std::allocator<_Tp1> >::deallocate(std::allocator_traits<std::allocator<_Tp1> >::allocator_type&, std::allocator_traits<std::allocator<_Tp1> >::pointer, std::allocator_traits<std::allocator<_Tp1> >::size_type) [with _Tp = std::tuple<int, int, int, int>; std::allocator_traits<std::allocator<_Tp1> >::allocator_type = std::allocator<std::tuple<int, int, int, int> >; std::allocator_traits<std::allocator<_Tp1> >::pointer = std::tuple<int, int, int, int>*; std::allocator_traits<std::allocator<_Tp1> >::size_type = long unsigned int]' /usr/include/c++/10/bits/stl_deque.h:566:21: required from 'void std::_Deque_base<_Tp, _Alloc>::_M_deallocate_node(std::_Deque_base<_Tp, _Alloc>::_Ptr) [with _Tp = std::tuple<int, int, int, int>; _Alloc = std::allocator<std::tuple<int, int, int, int> >; std::_Deque_base<_Tp, _Alloc>::_Ptr = std::tuple<int, int, int, int>*]' /usr/include/c++/10/bits/stl_deque.h:676:2: required from 'void std::_Deque_base<_Tp, _Alloc>::_M_destroy_nodes(std::_Deque_base<_Tp, _Alloc>::_Map_pointer, std::_Deque_base<_Tp, _Alloc>::_Map_pointer) [with _Tp = std::tuple<int, int, int, int>; _Alloc = std::allocator<std::tuple<int, int, int, int> >; std::_Deque_base<_Tp, _Alloc>::_Map_pointer = std::tuple<int, int, int, int>**]' /usr/include/c++/10/bits/stl_deque.h:598:4: required from 'std::_Deque_base<_Tp, _Alloc>::~_Deque_base() [with _Tp = std::tuple<int, int, int, int>; _Alloc = std::allocator<std::tuple<int, int, int, int> >]' /usr/include/c++/10/bits/stl_deque.h:831:7: required from 'std::queue<_Tp, _Sequence>::queue() [with _Seq = std::deque<std::tuple<int, int, int, int>, std::allocator<std::tuple<int, int, int, int> > >; _Requires = void; _Tp = std::tuple<int, int, int, int>; _Sequence = std::deque<std::tuple<int, int, int, int>, std::allocator<std::tuple<int, int, int, int> > >]' coprobber.cpp:13:48: required from here /usr/include/c++/10/ext/new_allocator.h:123:6: error: invalid application of '__alignof__' to incomplete type 'std::tuple<int, int, int, int>' 123 | if (alignof(_Tp) > __STDCPP_DEFAULT_NEW_ALIGNMENT__) | ^~~~~~~~~~~~ /usr/include/c++/10/ext/new_allocator.h:127:16: error: invalid application of 'sizeof' to incomplete type 'std::tuple<int, int, int, int>' 127 | __t * sizeof(_Tp), | ^~~~~~~~~~~ /usr/include/c++/10/ext/new_allocator.h:129:27: error: invalid application of '__alignof__' to incomplete type 'std::tuple<int, int, int, int>' 129 | std::align_val_t(alignof(_Tp))); | ^~~~~~~~~~~~ /usr/include/c++/10/ext/new_allocator.h:135:14: error: invalid application of 'sizeof' to incomplete type 'std::tuple<int, int, int, int>' 135 | , __t * sizeof(_Tp) | ^~~~~~~~~~~