이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include <bits/stdc++.h>
using namespace std;
// #define int long long
#define sp << ' ' <<
#define nl << '\n'
#include "library.h"
void Solve(int n){
vector<array<int, 2>> e;
vector<int> g[n], q(n), ans(n);
for(int _=1; _<n; ++_){
int low = 0, high = n-1;
while(low < high){
int mid = (low + high) / 2;
int exp = mid + 1;
for(auto &i : e) if(i[0] <= mid && i[1] <= mid) --exp;
for(int i=0; i<n; ++i) q[i] = i <= mid;
if(Query(q) == exp) low = mid + 1;
else high = mid;
}
int x = low; low = 0, high = x-1;
while(low < high){
int mid = (low + high) / 2;
int exp = mid + 1;
for(auto &i : e) if(i[0] <= mid && (i[1] <= mid || i[1] == x)) --exp;
for(int i=0; i<n; ++i) q[i] = i <= mid || i == x;
if(Query(q) <= exp) high = mid;
else low = mid + 1;
}
e.push_back({low, x});
g[low].push_back(x);
g[x].push_back(low);
}
if(n == 1){
ans[0] = 1;
Answer(ans);
return;
}
int u;
for(int i=0; i<n; ++i) if((int)g[i].size() == 1) u = i;
assert(u >= 0);
for(int i=0; i<n; ++i){
ans[i] = u + 1;
if(i == n-1) break;
u = g[u][i && g[u][0] + 1 == ans[i-1]];
}
Answer(ans);
}
컴파일 시 표준 에러 (stderr) 메시지
library.cpp: In function 'void Solve(int)':
library.cpp:52:14: warning: 'u' may be used uninitialized in this function [-Wmaybe-uninitialized]
52 | ans[i] = u + 1;
| ~~^~~
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |