Submission #683006

#TimeUsernameProblemLanguageResultExecution timeMemory
683006Eddard기지국 (IOI20_stations)C++17
100 / 100
964 ms872 KiB
#include "stations.h" #include <bits/stdc++.h> using namespace std; void setLabel(int u, int par, int f, vector<int> &labels, vector<vector<int>> &adj, int &c) { if (f) labels[u] = c++; for (auto v: adj[u]) if (v != par) setLabel(v, u, !f, labels, adj, c); if (!f) labels[u] = c++; } std::vector<int> label(int n, int k, std::vector<int> u, std::vector<int> v) { vector<int> labels(n, -1); vector<vector<int>> adj(n); int c = 0; for (int i = 0; i < n - 1; ++i) { adj[u[i]].push_back(v[i]); adj[v[i]].push_back(u[i]); } setLabel(0, -1, 0, labels, adj, c); return labels; } int find_next_station(int s, int t, std::vector<int> c) { if (s < c[0]) { if (t < s || t >= c.back()) return c.back(); auto it = lower_bound(c.begin(), c.end(), t) - c.begin(); return c[it]; } else { if (t > s || t <= c[0]) return c[0]; auto it = upper_bound(c.begin(), c.end(), t) - c.begin() - 1; return c[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...