Submission #1240339

#TimeUsernameProblemLanguageResultExecution timeMemory
1240339MuhammadSaramStations (IOI20_stations)C++20
100 / 100
309 ms596 KiB
#include "stations.h" #include <bits/stdc++.h> using namespace std; const int M = 1e3; vector<int> nei[M], ans; int st[M], en[M], t; void dfs(int u,int p=-1,bool a=0) { st[u]=t; if (!a) t++; for (int i:nei[u]) if (i!=p) dfs(i,u,!a); ans[u]=en[u]=t; if (!a) ans[u]=st[u]; else t++; } vector<int> label(int n, int k, vector<int> u, vector<int> v) { t=0; for (int i=0;i<n;i++) nei[i].clear(); ans=vector<int>(n); for (int i=0;i<n-1;i++) nei[u[i]].push_back(v[i]), nei[v[i]].push_back(u[i]); dfs(0); return ans; } int find_next_station(int s, int t, vector<int> c) { int m=c.size(); if (m==1) return c[0]; if (c[0]>s) { if (!s) { for (int i:c) if (t<=i) return i; } if (t<=c[m-2] && t>=s) { for (int i:c) if (t<=i) return i; } else return c[m-1]; } if (t>=c[1] && t<=s) { for (int i=m-1;i>0;i--) if (t>=c[i]) 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...