Submission #1168808

#TimeUsernameProblemLanguageResultExecution timeMemory
1168808windowwifeStations (IOI20_stations)C++20
0 / 100
304 ms2908 KiB
#ifndef rtgsp #include "stations.h" #endif #include<bits/stdc++.h> #define ll long long #define task "" using namespace std; const int maxn = 1e5 + 1; int t, d[maxn], tin[maxn], tout[maxn]; vector<int> adj[maxn], L, L2; void dfs (int u, int p) { tin[u] = t++; for (int v : adj[u]) { if (v == p) continue; d[v] = d[u] + 1; dfs(v, u); } tout[u] = t++; if (d[u] & 1) L[u] = L2[u] = tout[u]; else L[u] = L2[u] = tin[u]; } vector<int> label (int n, int k, vector<int> u, vector<int> v) { t = 0; for (int i = 0; i < n; i++) { adj[i].clear(); tin[i] = tout[i] = 0; } L.resize(n, 0); L2.resize(n, 0); for (int i = 0; i < n - 1; i++) { adj[u[i]].push_back(v[i]); adj[v[i]].push_back(u[i]); } dfs(0, -1); sort(L2.begin(), L2.end()); for (int i = 0; i < n; i++) L[i] = lower_bound(L2.begin(), L2.end(), L[i]) - L2.begin(); return L; } int find_next_station (int s, int t, vector<int> c) { bool ok = 0; if (s > c.back()) ok = 1; if (ok) { if (t <= c[0] || t > s) return c[0]; c.push_back(s); for (int i = 1; i < (int)c.size() - 1; i++) if (t >= c[i] && t < c[i + 1]) return c[i]; } else { if (t < s || t >= c.back()) return c.back(); c.insert(c.begin(), s); for (int i = 1; i < (int)c.size(); i++) if (t > c[i - 1] && t <= c[i]) return c[i]; } return -1; } #ifdef rtgsp int main() { //freopen(task".INP", "r", stdin); //freopen(task".OUT", "w", stdout); ios_base::sync_with_stdio(false); cin.tie(nullptr); vector<int> L = label(5, 10, {0, 1, 1, 2}, {1, 2, 3, 4}); for (int i : L) cout << i << " "; cout << '\n'; cout << find_next_station(1, 0, {2, 4}) << '\n'; cout << find_next_station(4, 3, {0, 1, 3}) << '\n'; } #endif
#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...