Submission #430173

#TimeUsernameProblemLanguageResultExecution timeMemory
430173alireza_kavianiStations (IOI20_stations)C++17
100 / 100
1442 ms876 KiB
#include "stations.h" #include <bits/stdc++.h> using namespace std; #define sep ' ' const int MAXN = 1010; int timer , ans[MAXN]; vector<int> adj[MAXN]; void DFS(int v , int p = -1 , int h = 0){ if(h % 2 == 0) ans[v] = timer++; for(int u : adj[v]){ if(u == p) continue; DFS(u , v , h + 1); } if(h % 2 == 1) ans[v] = timer++; } vector<int> label(int n, int k, vector<int> u, vector<int> v) { vector<int> labels(n , 0); timer = 0; for (int i = 0; i < n; i++) { adj[i].clear(); ans[i] = 0; } for(int i = 0 ; i < n - 1 ; i++){ adj[v[i]].push_back(u[i]); adj[u[i]].push_back(v[i]); } DFS(0); for(int i = 0 ; i < n ; i++){ labels[i] = ans[i]; // cout << i << sep << ans[i] << endl; } return labels; } int SolveSt(int s , int t , vector<int> c){ // cout << "solveSt " << s << sep << t << sep << c.size() << endl; int prv = s; for(int u : c){ if(prv < t && t <= u) return u; prv = u; } return c.back(); } int SolveFn(int s , int t , vector<int> c){ // cout << "SolveFn " << s << sep << t << sep << c.size() << endl; int prv = s; reverse(c.begin() , c.end()); for(int u : c){ // cout << u << endl; if(u <= t && t < prv) return u; prv = u; } return c.back(); } int find_next_station(int s, int t, vector<int> c) { // cout << "query " << s << sep << t << endl; if(s < c[0]) return SolveSt(s , t , c); if(s > c[0]) return SolveFn(s , t , c); }

Compilation message (stderr)

stations.cpp: In function 'int find_next_station(int, int, std::vector<int>)':
stations.cpp:63:1: warning: control reaches end of non-void function [-Wreturn-type]
   63 | }
      | ^
#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...