Submission #1293319

#TimeUsernameProblemLanguageResultExecution timeMemory
1293319SofiatpcStations (IOI20_stations)C++20
52.32 / 100
414 ms572 KiB
#include "stations.h" #include <bits/stdc++.h> using namespace std; const int MAXN = 1e3+5; vector<int> adj[MAXN]; int tin[MAXN], tout[MAXN], t; vector<int> labels; void dfs(int s, int p){ tin[s] = ++t; for(int viz : adj[s]) if(viz != p)dfs(viz,s); tout[s] = t; labels[s] = (tout[s]*1000)+tin[s]; } vector<int> label(int n, int k, vector<int> u, vector<int> v) { labels.resize(n); for (int i = 0; i < n-1; i++) { adj[u[i]].push_back(v[i]); adj[v[i]].push_back(u[i]); } t = -1; dfs(0,-1); for(int i = 0; i < n; i++)adj[i].clear(); return labels; } int find_next_station(int s, int t, vector<int> c) { t -= (t/1000)*1000; int outmx = c.back()/1000; int cur = 0; while(cur < c.size()){ int viz = c[cur]; int in = viz-(viz/1000)*1000, out = viz/1000; if(out == outmx)break; if(in <= t && t<= out)return viz; cur++; } for(int j = c.size()-1; j >= cur; j--){ int viz = c[j]; int in = viz-(viz/1000)*1000, out = viz/1000; if(in <= t && t<= out)return viz; } return c[cur]; }
#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...