Submission #1035441

#TimeUsernameProblemLanguageResultExecution timeMemory
1035441Mr_HusanboyStations (IOI20_stations)C++17
8 / 100
611 ms940 KiB
#include "stations.h" #include <bits/stdc++.h> using namespace std; #define ll long long #define all(a) (a).begin(), (a).end() #define ff first #define ss second template<typename T> int len(T &a){return a.size();} mt19937 rng(chrono::high_resolution_clock::now().time_since_epoch().count()); vector<int> label(int n, int k, vector<int> u, vector<int> v) { vector<vector<int>> g(n); for(int i = 0; i < n - 1;i ++){ g[u[i]].push_back(v[i]); g[v[i]].push_back(u[i]); } int st = 0; for(int i = 1; i < n; i ++) if(len(g[i]) == 1) st = i; vector<int> res(n); iota(all(res), 0); return res; int cur = 0; auto dfs = [&](auto &dfs, int i, int p = -1)->void{ res[i] = cur ++; for(auto u : g[i]){ if(u == p) continue; dfs(dfs, u, i); } }; dfs(dfs, st); return res; } int find_next_station(int s, int t, vector<int> c) { if(len(c) == 1){ return c[0]; } s ++; t ++; string a = "", b = ""; do{ a.push_back(s % 2 + '0'); s /= 2; }while(s); do{ b.push_back(t % 2 + '0'); t /= 2; }while(t); reverse(all(a)); reverse(all(b)); if(len(a) >= len(b) || b.substr(0, len(a)) != a){ return c[0]; } return c[b[len(a)] - '0' + (a != "1")]; }
#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...