Submission #427292

#TimeUsernameProblemLanguageResultExecution timeMemory
427292AugustinasJucasStations (IOI20_stations)C++14
0 / 100
3061 ms2097156 KiB
#include "stations.h" #include <bits/stdc++.h> using namespace std; const int dydis = 1000; vector<int> gr[dydis]; int enter[dydis]; int leave[dydis]; vector<int> ret (dydis); int dbInd = 0; void dfs(int v, int came){ enter[v] = dbInd++; for(auto x : gr[v]){ if(x == came) continue; dfs(x, v); } leave[v] = dbInd; ret[v] = enter[v] * dydis + leave[v] - 1; } vector<int> label(int n, int k, vector<int> u, vector<int> v) { for(int i = 0; i < n-1; i++){ gr[u[i]].push_back(v[i]); gr[v[i]].push_back(u[i]); } dfs(0, -1); ret.resize(n); return ret; } int find_next_station(int s, int t, vector<int> c) { int enterS = s / 1000; int leaveS = s % 1000; int enterT = t / 1000; int leaveT = t % 1000; if(enterS <= enterT && leaveT <= leaveS){ for(auto x : c){ int e = x / 1000; int l = x % 1000; if(e <= enterT && leaveS <= l){ return x; } } }else{ // eisiu aukstyn for(auto x : c){ int e = x / 1000; int l = x % 1000; if(e <= enterS && leaveS <= l){ return x; } } } 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...