Submission #833783

#TimeUsernameProblemLanguageResultExecution timeMemory
833783Sohsoh84Stations (IOI20_stations)C++17
100 / 100
788 ms876 KiB
#include "stations.h" #include <bits/stdc++.h> using namespace std; const int MAXN = 1e3 + 10; int t; vector<int> labels, adj[MAXN]; void dfs(int v, int p, bool b) { if (b) labels[v] = t++; for (int u : adj[v]) if (u != p) dfs(u, v, !b); if (!b) labels[v] = t++; } vector<int> label(int n, int k, vector<int> u, vector<int> v) { for (int i = 0; i < MAXN; i++) adj[i].clear(); t = 0; labels.resize(n); for (int i = 0; i < n - 1; i++) { int a = u[i], b = v[i]; adj[a].push_back(b); adj[b].push_back(a); } dfs(0, 0, true); return labels; } int find_next_station(int s, int t, vector<int> c) { sort(c.begin(), c.end()); bool f = s < c[0]; int n = c.size(); if (f) { if (t < s) return c[n - 1]; for (int i = 0; i < n - 1; i++) if (t <= c[i]) return c[i]; return c[n - 1]; } else { if (t > s) return c[0]; for (int i = n - 1; i > 0; i--) if (c[i] <= t) return c[i]; return c[0]; } }
#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...