Submission #424359

#TimeUsernameProblemLanguageResultExecution timeMemory
424359OttoTheDinoStations (IOI20_stations)C++17
100 / 100
1140 ms928 KiB
#include "stations.h" #include <bits/stdc++.h> using namespace std; #define rep(i,s,e) for (int i = s; i <= e; ++i) #define pb push_back typedef vector<int> vi; const int mxn = 2e3; int id, res[mxn]; vi neibs[mxn]; void dfs (int u, int prev, int d) { if (d%2) res[u]=id++; for (int v : neibs[u]) { if (v==prev) continue; dfs (v, u, d+1); } if (d%2==0) res[u]=id++; } vi label (int n, int k, vi u, vi v) { rep (i,0,n-2) { neibs[u[i]].pb(v[i]); neibs[v[i]].pb(u[i]); } dfs (0,-1,1); vi L(n); rep (i,0,n-1) L[i] = res[i]; rep (i,0,n-1) neibs[i].clear(); id = 0; return L; } int find_next_station (int s, int t, vi c) { sort(c.begin(), c.end()); if (s < c.front()) { if (t<s) return c.back(); for (int v : c) if (t<=v) return v; return c.back(); } else { reverse(c.begin(), c.end()); if (t>s) return c.back(); for (int v : c) if (t>=v) return v; return c.back(); } }
#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...