Submission #1202262

#TimeUsernameProblemLanguageResultExecution timeMemory
1202262AMel0nStations (IOI20_stations)C++20
0 / 100
305 ms600 KiB
#include <bits/stdc++.h> using namespace std; typedef long long ll; #define FOR(i,N) for(ll i = 0; i < N; i++) #define all(x) (x).begin(), (x).end() #define F first #define S second #include "stations.h" vector<int> in, out, dep; vector<vector<int>> adj; int cnt = 0; // Euler Tour void dfs(int n, int p) { dep[n] = dep[p]+1; in[n] = cnt; cnt++; for(auto c: adj[n]) { if (c != p) dfs(c, n); } out[n] = cnt; cnt++; } vector<int> label(int n, int k, vector<int> u, vector<int> v) { in.assign(n, 0); out.assign(n, 0); dep.assign(n, 0); adj.assign(n, vector<int>()); FOR(i, v.size()) { adj[u[i]].push_back(v[i]); adj[v[i]].push_back(u[i]); } dfs(0,0); vector<int> res(n); FOR(i, n) { if (dep[i] % 2) { res[i] = in[i]; } else { res[i] = out[i]; } } return res; } int find_next_station(int s, int t, vector<int> c) { int n = c.size(); // if s_entry <= t <= s_exit, t is in the subtree of s if (s < c[0]) { // preorder if (s < t && t <= c[0]) return c[0]; for(int i = 1; i < n - 1; i++) { if (c[i-1] < t && t <= c[i]) return c[i]; } if (s > 0) return c[n-1]; } if (s > c[n-1]) { // postorder for(int i = 1; i < n - 1; i++) { if (c[i] <= t && t < c[i+1]) return c[i]; } if (c[n-1] <= t && t < s) return c[n-1]; if (s > 0) return c[0]; } } // signed main() { // cin.tie(0); ios::sync_with_stdio(false); // }

Compilation message (stderr)

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