Submission #885485

#TimeUsernameProblemLanguageResultExecution timeMemory
885485epicci23Stations (IOI20_stations)C++17
100 / 100
612 ms1652 KiB
#include "stations.h" #include "bits/stdc++.h" using namespace std; #define pb push_back #define sz(x) ((int)(x).size()) typedef long long ll; vector<int> v[1005]; int ti=0,ttin[1005],ttout[1005],depth[1005]; void dfs(int c,int p){ depth[c]=depth[p]^1; ttin[c]=++ti; for(int x:v[c]){ if(x==p) continue; dfs(x,c); } ttout[c]=++ti; } vector<int> label(int n,int k,vector<int> u,vector<int> w){ depth[0]=ti=0; for(int i=0;i<n;i++) v[i].clear(); vector<int> res(n); for(int i=0;i<sz(u);i++){ v[u[i]].pb(w[i]); v[w[i]].pb(u[i]); } dfs(0,0); for(int i=0;i<n;i++){ if(depth[i]) res[i]=ttin[i]; else res[i]=ttout[i]; } map<int,int> mp; int fl=0; for(int i=0;i<n;i++) mp[res[i]]=1; for(auto x:mp) mp[x.first]=fl++; for(int i=0;i<n;i++) res[i]=mp[res[i]]; return res; } int find_next_station(int s,int t,vector<int> c){ if(sz(c)==1) return c[0]; if(s<c[0]){ for(int i=0;i<sz(c);i++) if(s<=t && t<=c[i]) return c[i]; return c.back(); } else{ for(int i=sz(c)-1;i>=0;i--) if(c[i]<=t && t<=s) 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...