제출 #1229160

#제출 시각아이디문제언어결과실행 시간메모리
1229160trimkus기지국 (IOI20_stations)C++20
0 / 100
302 ms520 KiB
#include "stations.h" #include <bits/stdc++.h> using namespace std; std::vector<int> label(int n, int k, std::vector<int> U, std::vector<int> V) { vector<vector<int>> adj(n); for (int i = 0; i < (int)U.size(); ++i) { adj[U[i]].push_back(V[i]); adj[V[i]].push_back(U[i]); } vector<int> rt(n); auto dfs = [&](auto& dfs, int i, int p, int d, int& tl, int& tr) -> void { if (d % 2) { rt[i] = tr--; } else { rt[i] = tl++; } for (auto& u : adj[i]) { if (p == u) continue; dfs(dfs, u, i, d + 1, tl, tr); } }; int tl = 0, tr = n - 1; dfs(dfs, 0, -1, 0, tl, tr); return rt; } int find_next_station(int s, int t, std::vector<int> c) { if (c.size() == 1) return c[0]; int n = c.size(); if (s > c.back()) { // black if (s < t || c[0] >= t) return c[0]; auto it = --upper_bound(begin(c), end(c), t); return *it; } else { // white if (t > s || c[n - 1] <= t) return c[n - 1]; auto it = lower_bound(begin(c), end(c), t); return *it; } }
#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...