Submission #606434

#TimeUsernameProblemLanguageResultExecution timeMemory
606434Sam_a17Stations (IOI20_stations)C++14
100 / 100
891 ms844 KiB
#include <bits/stdc++.h> using namespace std; #define sz(x) (int((x).size())) #define len(x) (int)x.length() #define all(x) (x).begin(), (x).end() #define rall(x) (x).rbegin(), (x).rend() #define dbg(x) cout << #x << " " << x << endl; #define uniq(x) x.resize(unique(all(x)) - x.begin()); #define pb push_back #define ld long double #define ll long long void pr(vector<int>& a) { cerr << "arr" << " "; for(auto i: a) { cerr << i << " "; } cerr << endl; } vector<int> label(int n, int k, vector<int> u, vector<int> v) { vector<int> labels(n), in(n), depth(n), tin(n), tout(n); vector<int> adj[n + 1]; int timer = 0; for(int i = 0; i < n - 1; i++) { in[u[i]]++, in[v[i]]++; adj[u[i]].push_back(v[i]); adj[v[i]].push_back(u[i]); } function<void(int node, int parent)> dfs; vector<int> compress; dfs = [&](int node, int parent) { tin[node] = timer++; for(auto i: adj[node]) { if(i == parent) continue; depth[i] = depth[node] + 1; dfs(i, node); } tout[node] = timer++; }; dfs(0, -1); for(int i = 0; i < n; i++) { if(depth[i] % 2 == 0) { compress.push_back(tin[i]); labels[i] = tin[i]; } else { compress.push_back(tout[i]); labels[i] = tout[i]; } } sort(all(compress)); for (int i = 0; i < n; i++) { labels[i] = lower_bound(all(compress), labels[i]) - compress.begin(); tin[i] = tout[i] = 0; adj[i].clear(); } return labels; } int find_next_station(int s, int t, std::vector<int> c) { if(sz(c) == 1) { return c[0]; } int s_ti, s_tu; // pr(c); int size = sz(c); sort(all(c)); bool t_in = false, t_out = false; if(s < c[0]) { s_ti = s; s_tu = c[size - 2]; t_in = true; } else { s_tu = s; s_ti = c[1]; t_out = true; } if(t >= s_ti && t <= s_tu) { // s's subtree if(t_in) { for(int i = 0; i < size; i++) { if(c[i] >= t) { return c[i]; } } assert(false); } else { sort(rall(c)); for(int i = 0; i < size; i++) { if(c[i] <= t) { return c[i]; } } assert(false); } } else { if(t_in) { sort(all(c)); return c.back(); } else { sort(all(c)); return c[0]; } } return c[0]; }

Compilation message (stderr)

stations.cpp: In function 'int find_next_station(int, int, std::vector<int>)':
stations.cpp:87:22: warning: variable 't_out' set but not used [-Wunused-but-set-variable]
   87 |   bool t_in = false, t_out = false;
      |                      ^~~~~
#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...