Submission #315697

#TimeUsernameProblemLanguageResultExecution timeMemory
315697SortingStations (IOI20_stations)C++17
100 / 100
1160 ms1152 KiB
#include "stations.h" #include <bits/stdc++.h> using namespace std; const int N = 1000 + 3; vector<int> adj[N]; int dfs(int u, int p, int idx, bool big, vector<int> &labels){ if(!big) labels[u] = idx++; for(int to: adj[u]){ if(to == p) continue; idx = dfs(to, u, idx, !big, labels); } if(big) labels[u] = idx++; return idx; } vector<int> label(int n, int k, vector<int> u, vector<int> v){ for(int i = 0; i < n; ++i) adj[i].clear(); for(int i = 0; i < n - 1; ++i){ adj[u[i]].push_back(v[i]); adj[v[i]].push_back(u[i]); } vector<int> labels(n); dfs(0, -1, 0, true, labels); return labels; } int find_next_station(int s, int t, vector<int> c){ if(c.size() == 1) return c[0]; if(s < c[0]){ if(t < s) return c.back(); for(int i = 0; i < (int)c.size() - 1; ++i) if(t <= c[i]) return c[i]; return c.back(); } if(t > s || t < c[1]) return c[0]; for(int i = 2; i < (int)c.size(); ++i) if(t < c[i]) return c[i - 1]; return c[(int)c.size() - 1]; } /* 2 5 10 0 1 0 2 1 3 1 4 1 0 4 0 2 1 0 1 1 1 0 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...