Submission #24655

#TimeUsernameProblemLanguageResultExecution timeMemory
24655bill_kondoICC (CEOI16_icc)C++14
Compilation error
0 ms0 KiB
#include "icc.h" #include <bits/stdc++.h> using namespace std; typedef pair <int, int> pii; const int maxn = 1e2 + 10; const int maxC = 1e2 + 10; int n; set <pii> e; int c[maxn]; int d[maxn]; void acha () { for (int a = 1; a <= n; ++a) for (int b = a + 1; b <= n; ++b) if (e.find (pii (a, b)) == e.end()) { c[0] = {a}; d[0] = {b}; if (query (1, 1, c, d)) { e.insert (pii (a, b)); setRoad (a, b); return; } } } int pointer; vector <int> adj[maxn]; bool mrk[maxn]; int node, E[maxn], p; void combina (int l, int r) { if (l == r) { node = d[l]; return; } int mid = (l + r) >> 1; p = 0; for (int i = l; i <= mid; ++i) E[p++] = d[i]; if (query (1, p, c, E)) combina (l, mid); else combina (mid + 1, r); } void dfs (int v) { mrk[v] = true; for (auto u: adj[v]) if (!mrk[u]) dfs (u); } void aresta () { for (int v = 1; v <= n; ++v) { c[0] = v; for (int u = 1; u <= n; ++u) mrk[u] = false; dfs (v); pointer = 0; for (int u = 1; u <= n; ++u) if (!mrk[u]) d[pointer++] = u; if (query (1, pointer, c, d)) { combina (0, pointer - 1); adj[v].push_back (node); adj[node].push_back (v); setRoad (v, node); return; } } } vector <int> C[maxC]; void DFS (int v, int id) { mrk[v] = true; C[id].push_back (v); for (auto u: adj[v]) if (!mrk[u]) DFS (u, id); } int pA, A[maxn]; int pB, B[maxn]; int pC, C[maxn]; int I, J; void combineA (int l, int r) { if (l == r) { I = l; return; } int mid = (l + r) >> 1; pC = 0; for (int i = l; i <= mid; ++i) C[pC++] = B[i]; if (query (pA, pC, A, C)) combineA (l, mid); else combineA (mid + 1, r); } void combineB (int l, int r) { if (l == r) { J = l; return; } int mid = (l + r) >> 1; pC = 0; for (int i = l; i <= mid; ++i) C[pC++] = A[i]; if (query (pB, pC, B, C)) combineB (l, mid); else combineB (mid + 1, r); } void solve () { vector <int> ids; for (int v = 1; v <= n; ++v) { C[i].clear(); mrk[v] = false; } int id = 0; for (int v = 1; v <= n; ++v) if (!mrk[v]) { ++id; DFS (v, id); ids.push_back (id); } int mid = (id - 1) / 2; random_shuffle (ids.begin(), ids.end()); for (int v = 1; v <= n; ++v) mrk[v] = false; pA = 0; for (int i = 0; i <= mid; ++i) for (auto u: C[i]) A[pA++] = u; pB = 0; for (int i = mid + 1; i < id; ++i) for (auto u: C[i]) B[pB++] = u; combineA (0, pB - 1); combineB (0, pA - 1); setRoad (A[I], B[J]); adj[A[I]].push_back (B[J]); adj[B[J]].push_back (A[I]); } void run (int N) { n = N; for (int i = 1; i <= n - 1; ++i) { if (N <= 15) acha (); else if (N <= 50) aresta (); else if (N <= 100) solve (); } }

Compilation message (stderr)

icc.cpp:111:15: error: conflicting declaration 'int C [110]'
 int pC, C[maxn];
               ^
icc.cpp:97:14: note: previous declaration as 'std::vector<int> C [110]'
 vector <int> C[maxC];
              ^
icc.cpp: In function 'void combineA(int, int)':
icc.cpp:127:11: error: no match for 'operator=' (operand types are 'std::vector<int>' and 'int')
   C[pC++] = B[i];
           ^
In file included from /usr/include/c++/5/vector:69:0,
                 from /usr/include/c++/5/bits/random.h:34,
                 from /usr/include/c++/5/random:49,
                 from /usr/include/c++/5/bits/stl_algo.h:66,
                 from /usr/include/c++/5/algorithm:62,
                 from /usr/include/x86_64-linux-gnu/c++/5/bits/stdc++.h:64,
                 from icc.cpp:2:
/usr/include/c++/5/bits/vector.tcc:167:5: note: candidate: std::vector<_Tp, _Alloc>& std::vector<_Tp, _Alloc>::operator=(const std::vector<_Tp, _Alloc>&) [with _Tp = int; _Alloc = std::allocator<int>]
     vector<_Tp, _Alloc>::
     ^
/usr/include/c++/5/bits/vector.tcc:167:5: note:   no known conversion for argument 1 from 'int' to 'const std::vector<int>&'
In file included from /usr/include/c++/5/vector:64:0,
                 from /usr/include/c++/5/bits/random.h:34,
                 from /usr/include/c++/5/random:49,
                 from /usr/include/c++/5/bits/stl_algo.h:66,
                 from /usr/include/c++/5/algorithm:62,
                 from /usr/include/x86_64-linux-gnu/c++/5/bits/stdc++.h:64,
                 from icc.cpp:2:
/usr/include/c++/5/bits/stl_vector.h:448:7: note: candidate: std::vector<_Tp, _Alloc>& std::vector<_Tp, _Alloc>::operator=(std::vector<_Tp, _Alloc>&&) [with _Tp = int; _Alloc = std::allocator<int>]
       operator=(vector&& __x) noexcept(_Alloc_traits::_S_nothrow_move())
       ^
/usr/include/c++/5/bits/stl_vector.h:448:7: note:   no known conversion for argument 1 from 'int' to 'std::vector<int>&&'
/usr/include/c++/5/bits/stl_vector.h:470:7: note: candidate: std::vector<_Tp, _Alloc>& std::vector<_Tp, _Alloc>::operator=(std::initializer_list<_Tp>) [with _Tp = int; _Alloc = std::allocator<int>]
       operator=(initializer_list<value_type> __l)
       ^
/usr/include/c++/5/bits/stl_vector.h:470:7: note:   no known conversion for argument 1 from 'int' to 'std::initializer_list<int>'
icc.cpp:129:25: error: cannot convert 'std::vector<int>*' to 'int*' for argument '4' to 'int query(int, int, int*, int*)'
  if (query (pA, pC, A, C))
                         ^
icc.cpp: In function 'void combineB(int, int)':
icc.cpp:147:11: error: no match for 'operator=' (operand types are 'std::vector<int>' and 'int')
   C[pC++] = A[i];
           ^
In file included from /usr/include/c++/5/vector:69:0,
                 from /usr/include/c++/5/bits/random.h:34,
                 from /usr/include/c++/5/random:49,
                 from /usr/include/c++/5/bits/stl_algo.h:66,
                 from /usr/include/c++/5/algorithm:62,
                 from /usr/include/x86_64-linux-gnu/c++/5/bits/stdc++.h:64,
                 from icc.cpp:2:
/usr/include/c++/5/bits/vector.tcc:167:5: note: candidate: std::vector<_Tp, _Alloc>& std::vector<_Tp, _Alloc>::operator=(const std::vector<_Tp, _Alloc>&) [with _Tp = int; _Alloc = std::allocator<int>]
     vector<_Tp, _Alloc>::
     ^
/usr/include/c++/5/bits/vector.tcc:167:5: note:   no known conversion for argument 1 from 'int' to 'const std::vector<int>&'
In file included from /usr/include/c++/5/vector:64:0,
                 from /usr/include/c++/5/bits/random.h:34,
                 from /usr/include/c++/5/random:49,
                 from /usr/include/c++/5/bits/stl_algo.h:66,
                 from /usr/include/c++/5/algorithm:62,
                 from /usr/include/x86_64-linux-gnu/c++/5/bits/stdc++.h:64,
                 from icc.cpp:2:
/usr/include/c++/5/bits/stl_vector.h:448:7: note: candidate: std::vector<_Tp, _Alloc>& std::vector<_Tp, _Alloc>::operator=(std::vector<_Tp, _Alloc>&&) [with _Tp = int; _Alloc = std::allocator<int>]
       operator=(vector&& __x) noexcept(_Alloc_traits::_S_nothrow_move())
       ^
/usr/include/c++/5/bits/stl_vector.h:448:7: note:   no known conversion for argument 1 from 'int' to 'std::vector<int>&&'
/usr/include/c++/5/bits/stl_vector.h:470:7: note: candidate: std::vector<_Tp, _Alloc>& std::vector<_Tp, _Alloc>::operator=(std::initializer_list<_Tp>) [with _Tp = int; _Alloc = std::allocator<int>]
       operator=(initializer_list<value_type> __l)
       ^
/usr/include/c++/5/bits/stl_vector.h:470:7: note:   no known conversion for argument 1 from 'int' to 'std::initializer_list<int>'
icc.cpp:149:25: error: cannot convert 'std::vector<int>*' to 'int*' for argument '4' to 'int query(int, int, int*, int*)'
  if (query (pB, pC, B, C))
                         ^
icc.cpp: In function 'void solve()':
icc.cpp:161:5: error: 'i' was not declared in this scope
   C[i].clear();
     ^