제출 #1072996

#제출 시각아이디문제언어결과실행 시간메모리
1072996Ignut기지국 (IOI20_stations)C++17
8 / 100
638 ms936 KiB
// Ignut #include <bits/stdc++.h> using namespace std; using ll = long long; const int N = 1111; vector<int> tree[N]; vector<int> order; void dfs(int v, int par) { order.push_back(v); for (int to : tree[v]) if (to != par) dfs(to, v); } vector<int> label(int n, int k, vector<int> u, vector<int> v) { // order.clear(); // for (int i = 0; i < n; i ++) { // tree[i].clear(); // } // for (int i = 0; i < n - 1; i ++) { // tree[u[i]].push_back(v[i]); // tree[v[i]].push_back(u[i]); // } // int start = 0; // for (int i = 0; i < n; i ++) // if (tree[i].size() == 1) // start = i; // dfs(start, -1); vector<int> lbl(n); for (int i = 0; i < n; i ++) lbl[i] = i; return lbl; } bool isInSubtree(int rt, int v) { int l = rt, r = rt; while (v > r) { l = l * 2 + 1, r = r * 2 + 2; } return (l <= v && v <= r); } int find_next_station(int s, int t, vector<int> c) { if (c.size() == 1) return c[0]; int mx = 0; for (int val : c) mx = max(mx, val); if (isInSubtree(mx, t)) return mx; for (int val : c) { if (val == mx - 1) { if (isInSubtree(val, t)) return val; } } int mn = 1111; for (int val : c) mn = min(mn, val); return mn; if (isInSubtree(c.back(), t)) return c.back(); c.pop_back(); if (isInSubtree(c.back(), t)) return c.back(); c.pop_back(); 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...