제출 #762750

#제출 시각아이디문제언어결과실행 시간메모리
762750vjudge1Fun Tour (APIO20_fun)C++17
컴파일 에러
0 ms0 KiB
#include <bits/stdc++.h> #include "fun.h" using namespace std; typedef pair<int,int> pii; typedef vector<int> vi; #define pb push_back #define ff first #define ss second #define all(x) (x).begin(),(x).end() const int nax = 1e5 + 4; int par[nax]; vi adj[nax]; int d[nax]; vi cord[nax]; void dfs(int x) { d[x] = d[par[x]] + 1; cord[d[x]].pb(x); for(auto e: adj[x]) { dfs(e); } } int dist(int x, int y) { if(d[x] < d[y]) swap(x, y); int rep = 0; while(d[x] != d[y]) { x = par[x]; rep++; } while(x != y) { x = par[x]; y = par[y]; rep += 2; } return rep ; } vi createFunTour(int N, int Q) { for(int i= N -1; i > 0; i--) { par[i] = (i - 1)/2; adj[par[i]].pb(i); } d[0] = -1; dfs(0); int last = log2(N); vi seq; for(int layer = last; layer >= 0; layer--) { int i = 0, j = (int)(cord[layer].size()) - 1; bool ok = 1; if(!seq.empty() && dist(seq.back(),cord[layer][0]) != d[seq.back()] + d[cord[layer][0]]) { ok = 0; } while(i <= j) { if(i == j) { seq.pb(cord[layer][i]); break; } else { if(ok) { seq.pb(cord[layer][i]); seq.pb(cord[layer][j]); i++; j--; } else { seq.pb(cord[layer][j]); seq.pb(cord[layer][i]); i++; j--; } } } } return seq; } #include <bits/stdc++.h> #include "fun.h" using namespace std; typedef pair<int,int> pii; typedef vector<int> vi; #define pb push_back #define ff first #define ss second #define all(x) (x).begin(),(x).end() const int nax = 1e5 + 4; int par[nax]; vi adj[nax]; int d[nax]; vi cord[nax]; void dfs(int x) { d[x] = d[par[x]] + 1; cord[d[x]].pb(x); for(auto e: adj[x]) { dfs(e); } } int dist(int x, int y) { if(d[x] < d[y]) swap(x, y); int rep = 0; while(d[x] != d[y]) { x = par[x]; rep++; } while(x != y) { x = par[x]; y = par[y]; rep += 2; } return rep ; } vi createFunTour(int N, int Q) { for(int i= N -1; i > 0; i--) { par[i] = (i - 1)/2; adj[par[i]].pb(i); } d[0] = -1; dfs(0); int last = log2(N); vi seq; for(int layer = last; layer >= 0; layer--) { int i = 0, j = (int)(cord[layer].size()) - 1; bool ok = 1; if(!seq.empty() && dist(seq.back(),cord[layer][0]) != d[seq.back()] + d[cord[layer][0]]) { ok = 0; } while(i <= j) { if(i == j) { seq.pb(cord[layer][i]); break; } else { if(ok) { seq.pb(cord[layer][i]); seq.pb(cord[layer][j]); i++; j--; } else { seq.pb(cord[layer][j]); seq.pb(cord[layer][i]); i++; j--; } } } } return seq; }

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

fun.cpp:104:11: error: redefinition of 'const int nax'
  104 | const int nax = 1e5 + 4;
      |           ^~~
fun.cpp:13:11: note: 'const int nax' previously defined here
   13 | const int nax = 1e5 + 4;
      |           ^~~
fun.cpp:105:5: error: redefinition of 'int par [100004]'
  105 | int par[nax];
      |     ^~~
fun.cpp:14:5: note: 'int par [100004]' previously declared here
   14 | int par[nax];
      |     ^~~
fun.cpp:106:4: error: redefinition of 'vi adj [100004]'
  106 | vi adj[nax];
      |    ^~~
fun.cpp:15:4: note: 'vi adj [100004]' previously declared here
   15 | vi adj[nax];
      |    ^~~
fun.cpp:107:5: error: redefinition of 'int d [100004]'
  107 | int d[nax];
      |     ^
fun.cpp:16:5: note: 'int d [100004]' previously declared here
   16 | int d[nax];
      |     ^
fun.cpp:108:4: error: redefinition of 'vi cord [100004]'
  108 | vi cord[nax];
      |    ^~~~
fun.cpp:17:4: note: 'vi cord [100004]' previously declared here
   17 | vi cord[nax];
      |    ^~~~
fun.cpp:110:6: error: redefinition of 'void dfs(int)'
  110 | void dfs(int x)
      |      ^~~
fun.cpp:19:6: note: 'void dfs(int)' previously defined here
   19 | void dfs(int x)
      |      ^~~
fun.cpp:120:5: error: redefinition of 'int dist(int, int)'
  120 | int dist(int x, int y)
      |     ^~~~
fun.cpp:29:5: note: 'int dist(int, int)' previously defined here
   29 | int dist(int x, int y)
      |     ^~~~
fun.cpp:138:4: error: redefinition of 'vi createFunTour(int, int)'
  138 | vi createFunTour(int N, int Q)
      |    ^~~~~~~~~~~~~
fun.cpp:47:4: note: 'std::vector<int> createFunTour(int, int)' previously defined here
   47 | vi createFunTour(int N, int Q)
      |    ^~~~~~~~~~~~~