제출 #762741

#제출 시각아이디문제언어결과실행 시간메모리
762741vjudge1Fun Tour (APIO20_fun)C++17
0 / 100
77 ms25948 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--; } } } } }

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

fun.cpp: In function 'vi createFunTour(int, int)':
fun.cpp:90:1: warning: no return statement in function returning non-void [-Wreturn-type]
   90 | }
      | ^
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...