Submission #1148651

#TimeUsernameProblemLanguageResultExecution timeMemory
1148651PagodePaivaStations (IOI20_stations)C++20
52.32 / 100
309 ms580 KiB
#include "stations.h" #include<bits/stdc++.h> using namespace std; const int N = 1010; vector <int> g[N]; int tin[N], sz[N]; int tmm; void dfs(int v, int p){ tin[v] = tmm; tmm++; sz[v] = 1; for(auto x : g[v]){ if(x == p) continue; dfs(x, v); sz[v] += sz[x]; } return; } std::vector<int> label(int n, int k, std::vector<int> u, std::vector<int> v) { for(int i = 0;i < n;i++){ g[i].clear(); tin[i] = sz[i] = 0; } tmm = 0; std::vector<int> labels; for(int i = 0;i < n-1;i++){ g[u[i]].push_back(v[i]); g[v[i]].push_back(u[i]); } dfs(0, 0); for(int i = 0;i < n;i++){ labels.push_back(tin[i]+1000*(sz[i]-1)); } return labels; } int find_next_station(int s, int t, std::vector<int> c) { vector <pair <int, int>> ans; for(auto x : c){ ans.push_back({x%1000, x/1000+1}); } int tn = t%1000; int cn = s%1000, cs = s/1000+1; if(tn < cn or tn >= cn+cs){ for(int i = 0;i < ans.size();i++){ if(ans[i].first < cn) return c[i]; } } for(int i = 0;i < ans.size();i++){ if(ans[i].first <= tn and tn < ans[i].first+ans[i].second) return c[i]; } }

Compilation message (stderr)

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