Submission #552447

#TimeUsernameProblemLanguageResultExecution timeMemory
552447Killer2501Amusement Park (JOI17_amusement_park)C++14
Compilation error
0 ms0 KiB
#include "Joi.h" #include <bits/stdc++.h> #define ll long long #define ld long double #define ull unsigned long long #define pb push_back #define pll pair<int, pii> #define pii pair<int, int> #define fi first #define se second using namespace std; const int N = 2e5+2; const int M = 60; const int mod = 1e9+7; const ll base = 1e6; const ll inf = 1e9; int n, m, b[N], a[N], k, d[N], cnt, par[N], f[N]; ll ans; vector<int> adj[N]; bool vis[N]; set<pii> leaf; set<int> st[N]; void dfs(int u) { vis[u] = true; if(cnt < M) { d[u] = cnt++; } else { auto it = leaf.begin(); if(u != 0 && d[par[u]] == (*it).se)++it; int v = (*it).se; d[u] = v; leaf.erase(it); for(int x: st[v]) { leaf.erase({st[x].size(), x}); st[x].erase(v); leaf.insert({st[x].size(), x}); } st[v].clear(); } leaf.insert({0, d[u]}); if(u != 0) { int v = d[par[u]]; leaf.erase({st[d[u]].size(), d[u]}); leaf.erase({st[v].size(), v}); st[v].insert(d[u]); st[d[u]].insert(v); leaf.insert({st[d[u]].size(), d[u]}); leaf.insert({st[v].size(), v}); } //cout << u <<" "<<d[u]<<'\n'; for(int v: adj[u]) { if(vis[v])continue; par[v] = u; dfs(v); } } void Joi(int n, int m, int A[], int B[], ll x, int T) { for(int i = 0; i < n; i ++) { st[i].clear(); adj[i].clear(); } leaf.clear(); cnt = 0; for(int i = 0; i < m; i ++) { adj[A[i]].pb(B[i]); adj[B[i]].pb(A[i]); } fill_n(d, n, -1); fill_n(par, n, -1); fill_n(vis, n, 0); dfs(0); for(int i = 0; i < n; i ++) MessageBoard(i, (x>>d[i]&1)); }
#include "Ioi.h" #include <bits/stdc++.h> #define ll long long #define ld long double #define ull unsigned long long #define pb push_back #define pll pair<int, pii> #define pii pair<int, int> #define fi first #define se second using namespace std; const int N = 2e5+2; const int M = 60; const int mod = 1e9+7; const ll base = 1e6; const ll inf = 1e9; int n, m, b[N], a[N], k, d[N], cnt, par[N], f[N]; ll ans; vector<int> adj[N]; bool vis[N]; set<pii> leaf; set<int> st[N]; void dfs(int u) { vis[u] = true; if(cnt < M) { d[u] = cnt++; } else { auto it = leaf.begin(); if(u != 0 && d[par[u]] == (*it).se)++it; int v = (*it).se; d[u] = v; leaf.erase(it); for(int x: st[v]) { leaf.erase({st[x].size(), x}); st[x].erase(v); leaf.insert({st[x].size(), x}); } st[v].clear(); } leaf.insert({0, d[u]}); if(u != 0) { int v = d[par[u]]; leaf.erase({st[d[u]].size(), d[u]}); leaf.erase({st[v].size(), v}); st[v].insert(d[u]); st[d[u]].insert(v); leaf.insert({st[d[u]].size(), d[u]}); leaf.insert({st[v].size(), v}); } //cout << u <<" "<<d[u]<<'\n'; for(int v: adj[u]) { if(vis[v])continue; par[v] = u; dfs(v); } } map<pii, int> mp; int lst; void cal(int u) { //cout << u <<" "<<d[u]<<" "<<a[d[u]]<<'\n'; for(int v: adj[u]) { if(a[d[v]] == -1) { assert(mp[{lst, v}] > 0); lst = v; a[d[v]] = Move(v); cal(v); assert(mp[{lst, u}] > 0); lst = u; Move(u); } } } ll Ioi(int n, int m, int A[], int B[], int P, int V, int T) { for(int i = 0; i < n; i ++) { st[i].clear(); adj[i].clear(); } leaf.clear(); cnt = 0; mp.clear(); for(int i = 0; i < m; i ++) { adj[A[i]].pb(B[i]); adj[B[i]].pb(A[i]); mp[A[i]][B[i]] = mp[B[i]][A[i]] = 1; } fill_n(d, n, -1); fill_n(par, n, -1); fill_n(vis, n, 0); dfs(0); fill_n(a, M, -1); a[d[P]] = V; lst = P; cal(P); ll res = 0; for(int i = 0; i < M; i ++) { //cout << a[i] <<" "<<i<<'\n'; if(a[i]) res |= (1ll<<i); } return res; }

Compilation message (stderr)

Ioi.cpp:74:36: error: macro "assert" passed 2 arguments, but takes just 1
   74 |             assert(mp[{lst, v}] > 0);
      |                                    ^
In file included from /usr/include/c++/10/cassert:44,
                 from /usr/include/x86_64-linux-gnu/c++/10/bits/stdc++.h:33,
                 from Ioi.cpp:2:
/usr/include/assert.h:92: note: macro "assert" defined here
   92 | #  define assert(expr)       \
      | 
Ioi.cpp:78:36: error: macro "assert" passed 2 arguments, but takes just 1
   78 |             assert(mp[{lst, u}] > 0);
      |                                    ^
In file included from /usr/include/c++/10/cassert:44,
                 from /usr/include/x86_64-linux-gnu/c++/10/bits/stdc++.h:33,
                 from Ioi.cpp:2:
/usr/include/assert.h:92: note: macro "assert" defined here
   92 | #  define assert(expr)       \
      | 
Ioi.cpp: In function 'void cal(int)':
Ioi.cpp:74:13: error: 'assert' was not declared in this scope
   74 |             assert(mp[{lst, v}] > 0);
      |             ^~~~~~
Ioi.cpp:3:1: note: 'assert' is defined in header '<cassert>'; did you forget to '#include <cassert>'?
    2 | #include <bits/stdc++.h>
  +++ |+#include <cassert>
    3 | #define ll long long
Ioi.cpp: In function 'long long int Ioi(int, int, int*, int*, int, int, int)':
Ioi.cpp:98:11: error: no match for 'operator[]' (operand types are 'std::map<std::pair<int, int>, int>' and 'int')
   98 |         mp[A[i]][B[i]] = mp[B[i]][A[i]] = 1;
      |           ^
In file included from /usr/include/c++/10/map:61,
                 from /usr/include/x86_64-linux-gnu/c++/10/bits/stdc++.h:81,
                 from Ioi.cpp:2:
/usr/include/c++/10/bits/stl_map.h:492:7: note: candidate: 'std::map<_Key, _Tp, _Compare, _Alloc>::mapped_type& std::map<_Key, _Tp, _Compare, _Alloc>::operator[](const key_type&) [with _Key = std::pair<int, int>; _Tp = int; _Compare = std::less<std::pair<int, int> >; _Alloc = std::allocator<std::pair<const std::pair<int, int>, int> >; std::map<_Key, _Tp, _Compare, _Alloc>::mapped_type = int; std::map<_Key, _Tp, _Compare, _Alloc>::key_type = std::pair<int, int>]'
  492 |       operator[](const key_type& __k)
      |       ^~~~~~~~
/usr/include/c++/10/bits/stl_map.h:492:34: note:   no known conversion for argument 1 from 'int' to 'const key_type&' {aka 'const std::pair<int, int>&'}
  492 |       operator[](const key_type& __k)
      |                  ~~~~~~~~~~~~~~~~^~~
/usr/include/c++/10/bits/stl_map.h:512:7: note: candidate: 'std::map<_Key, _Tp, _Compare, _Alloc>::mapped_type& std::map<_Key, _Tp, _Compare, _Alloc>::operator[](std::map<_Key, _Tp, _Compare, _Alloc>::key_type&&) [with _Key = std::pair<int, int>; _Tp = int; _Compare = std::less<std::pair<int, int> >; _Alloc = std::allocator<std::pair<const std::pair<int, int>, int> >; std::map<_Key, _Tp, _Compare, _Alloc>::mapped_type = int; std::map<_Key, _Tp, _Compare, _Alloc>::key_type = std::pair<int, int>]'
  512 |       operator[](key_type&& __k)
      |       ^~~~~~~~
/usr/include/c++/10/bits/stl_map.h:512:29: note:   no known conversion for argument 1 from 'int' to 'std::map<std::pair<int, int>, int>::key_type&&' {aka 'std::pair<int, int>&&'}
  512 |       operator[](key_type&& __k)
      |                  ~~~~~~~~~~~^~~
Ioi.cpp:98:28: error: no match for 'operator[]' (operand types are 'std::map<std::pair<int, int>, int>' and 'int')
   98 |         mp[A[i]][B[i]] = mp[B[i]][A[i]] = 1;
      |                            ^
In file included from /usr/include/c++/10/map:61,
                 from /usr/include/x86_64-linux-gnu/c++/10/bits/stdc++.h:81,
                 from Ioi.cpp:2:
/usr/include/c++/10/bits/stl_map.h:492:7: note: candidate: 'std::map<_Key, _Tp, _Compare, _Alloc>::mapped_type& std::map<_Key, _Tp, _Compare, _Alloc>::operator[](const key_type&) [with _Key = std::pair<int, int>; _Tp = int; _Compare = std::less<std::pair<int, int> >; _Alloc = std::allocator<std::pair<const std::pair<int, int>, int> >; std::map<_Key, _Tp, _Compare, _Alloc>::mapped_type = int; std::map<_Key, _Tp, _Compare, _Alloc>::key_type = std::pair<int, int>]'
  492 |       operator[](const key_type& __k)
      |       ^~~~~~~~
/usr/include/c++/10/bits/stl_map.h:492:34: note:   no known conversion for argument 1 from 'int' to 'const key_type&' {aka 'const std::pair<int, int>&'}
  492 |       operator[](const key_type& __k)
      |                  ~~~~~~~~~~~~~~~~^~~
/usr/include/c++/10/bits/stl_map.h:512:7: note: candidate: 'std::map<_Key, _Tp, _Compare, _Alloc>::mapped_type& std::map<_Key, _Tp, _Compare, _Alloc>::operator[](std::map<_Key, _Tp, _Compare, _Alloc>::key_type&&) [with _Key = std::pair<int, int>; _Tp = int; _Compare = std::less<std::pair<int, int> >; _Alloc = std::allocator<std::pair<const std::pair<int, int>, int> >; std::map<_Key, _Tp, _Compare, _Alloc>::mapped_type = int; std::map<_Key, _Tp, _Compare, _Alloc>::key_type = std::pair<int, int>]'
  512 |       operator[](key_type&& __k)
      |       ^~~~~~~~
/usr/include/c++/10/bits/stl_map.h:512:29: note:   no known conversion for argument 1 from 'int' to 'std::map<std::pair<int, int>, int>::key_type&&' {aka 'std::pair<int, int>&&'}
  512 |       operator[](key_type&& __k)
      |                  ~~~~~~~~~~~^~~