Submission #1229421

#TimeUsernameProblemLanguageResultExecution timeMemory
1229421Rokas159Stations (IOI20_stations)C++20
0 / 100
308 ms572 KiB
#include "stations.h" #include <vector> #include <bits/stdc++.h> using namespace std; vector<vector<int>> adj; vector<int> labels; vector<bool> vis; int cnt = 0; void dfs(int v, bool b = false) { vis[v] = true; if (b) { labels[v] = cnt++; } for (int u : adj[v]) { if (!vis[u]) { dfs(u); } } if (!b) { labels[v] = cnt++; } } std::vector<int> label(int n, int k, std::vector<int> u, std::vector<int> v) { adj.assign(n, {}); labels.resize(n); vis.assign(n, false); cnt = 0; for (int i = 0; i < u.size(); i++) { adj[u[i]].push_back(v[i]); adj[v[i]].push_back(u[i]); } dfs(0); return labels; } int find_next_station(int s, int t, std::vector<int> c) { if (s > c[0]) { // current is biggest if (t > s) { return c[0]; } auto it = upper_bound(c.begin(), c.end(), t); if (it != c.begin()) { it--; } return *it; } else { // current is smallest if (t < s) { return c.back(); } auto it = lower_bound(c.begin(), c.end(), t); if (it == c.end()) { it--; } return *it; } }
#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...