Submission #350219

#TimeUsernameProblemLanguageResultExecution timeMemory
350219amunduzbaevStations (IOI20_stations)C++14
100 / 100
1140 ms1504 KiB
#include "stations.h" #ifndef EVAL #include "stub.cpp" #endif #include <bits/stdc++.h> using namespace std; #define sz(x) (int)x.size() #define pb push_back #define all(x) x.begin(), x.end() const int NN = 1e3+5; vector<int> edges[NN]; int tim; vector<int> val; void dfs(int u, int t, int p){ if(t) val[u] = ++tim; for(auto x:edges[u]){ if(x == p) continue; dfs(x, (t ? 0 : 1), u); } if(!t) val[u] = ++tim; } vector<int> label(int n, int k, vector<int> u, vector<int> v) { for(int i=0;i<n;i++) edges[i].clear(); val.clear(); for(int i=0;i<n-1;i++){ edges[u[i]].pb(v[i]); edges[v[i]].pb(u[i]); } val.resize(n); tim = -1; dfs(0, 1, -1); //cout<<"passed\n"; return val; } int find_next_station(int s, int t, vector<int> c){ //sort(all(c)); //cout<<s<<" "<<t<<"\n"; //for(auto x:c) cout<<x<<" "; //cout<<"\n\n"; if(s < c[0]){ int p = c[sz(c)-1]; if(t >= p || t < s) return p; int i = 0; while(c[i] < t && i < sz(c)-1) i++; return c[i]; } else{ int p = c[0]; if(t > s || t < c[1]) return p; int i = sz(c)-1; while(c[i] > t && i > 0) i--; return c[i]; } } /* 1 5 10 0 1 1 2 2 3 3 4 3 1 3 1 4 0 1 1 5 10 0 1 1 2 1 3 2 4 2 0 2 1 3 */
#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...