# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
1018338 | vjudge1 | Highway Tolls (IOI18_highway) | C++17 | 202 ms | 262144 KiB |
이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include "highway.h"
#include <bits/stdc++.h>
using namespace std;
using ll = long long;
using vll = vector <ll>;
using vi = vector <int>;
using ii = pair <ll, ll>;
using vii = vector <ii>;
const ll MAXN = 9E4+16;
vii adj[MAXN];
ll dep[MAXN];
ll toPar[MAXN];
void dfs (ll u, ll par) {
for (auto [v, id] : adj[u]) {
if (v == par) continue;
dep[v] = dep[u]+1;
toPar[v] = id;
dfs(v, u);
}
}
void find_pair (int n, vi us, vi vs, int a, int b) {
for (ll i = 0; i < us.size(); i++) {
adj[us[i]].push_back({ vs[i], i });
adj[vs[i]].push_back({ us[i], i });
}
dep[0] = 0;
dfs(0, 0);
ll rum = ask(vi(n-1, 0));
assert(rum%a == 0);
ll sdep = rum/a;
vll cands;
for (ll u = 0; u < n; u++) {
if (dep[u] == sdep) cands.push_back(u);
}
ll l = 0, r = cands.size()-1;
while (l < r) {
ll mid = (l+r)>>1;
vi vask(n-1, 0);
for (ll i = l; i <= mid; i++) vask[toPar[cands[i]]] = 1;
if (ask(vask) != sdep*a)
r = mid;
else
l = mid+1;
}
answer(0, cands[l]);
}
컴파일 시 표준 에러 (stderr) 메시지
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |