Submission #1106464

#TimeUsernameProblemLanguageResultExecution timeMemory
1106464snpmrnhlol기지국 (IOI20_stations)C++17
100 / 100
836 ms1032 KiB
#include "stations.h" #include <bits/stdc++.h> using namespace std; std::vector<int> label(int n, int k, std::vector<int> u, std::vector<int> v) { vector <vector<int>> e; vector<int> labels; e.resize(n); int cnt = 0; auto dfs = [&](auto self, int node, int p, int d) -> void{ if(d == 0)labels[node] = cnt++; for(auto i:e[node]){ if(i == p)continue; self(self, i, node, d^1); } if(d == 1)labels[node] = cnt++; }; labels.resize(n); for(int i = 0;i < n - 1;i++){ e[u[i]].push_back(v[i]); e[v[i]].push_back(u[i]); } for(int i = 0;i < n;i++){ if(e[i].size() == 1){ dfs(dfs, i, -1, 0); break; } } return labels; } int find_next_station(int s, int t, std::vector<int> c) { if(c.size() == 1)return c[0]; sort(c.begin(),c.end()); if(s < c[0]){ if(s <= t && t <= c[(int)c.size() - 2]){ int nr = 1000000; for(auto i:c){ if(t <= i){ nr = min(nr, i); } } return nr; }else{ return c[(int)c.size() - 1]; } }else{ if(c[1] <= t && t <= s){ int nr = -1; for(auto i:c){ if(i <= t){ nr = max(nr, i); } } return nr; }else{ 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...