# | Submission time | Handle | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
30530 | 2017-07-24T12:36:33 Z | RezwanArefin01 | Ball Machine (BOI13_ballmachine) | C++14 | 289 ms | 22100 KB |
//Bismillahir Rahmanir Rahim #include <bits/stdc++.h> using namespace std; typedef long long ll; const int maxn = 1e5 + 10; vector<int> adj[maxn], post; int prior[maxn], dep[maxn], par[maxn][18]; bool has[maxn]; int MinDfs(int u) { prior[u] = u; for(int v : adj[u]) { dep[v] = dep[u] + 1; prior[u] = min(prior[u], MinDfs(v)); } sort(adj[u].begin(), adj[u].end(), [](int &a, int &b) { return prior[a] < prior[b]; } ); return prior[u]; } void postDfs(int u) { for(int i = 1; i <= 17; i++) if(par[u][i-1]) par[u][i] = par[par[u][i-1]][i-1]; if(!adj[u].size()) { post.push_back(u); return; } for(int v : adj[u]) postDfs(v); post.push_back(u); } struct node{ int u, prior; bool operator < (const node &p) const { return prior > p.prior; } }; int main(int argc, char const *argv[]) { #ifdef LOCAL_TESTING freopen("in", "r", stdin); #endif int n, q, root; scanf("%d %d", &n, &q); for(int i = 1; i <= n; i++) { int p; scanf("%d", &p); if(p == 0) root = i; adj[p].push_back(i); par[i][0] = p; } MinDfs(root); postDfs(root); priority_queue<node> Q; for(int i = 0; i < n; i++) { Q.push({post[i], i}); prior[post[i]] = i; has[post[i]] = 0; } while(q--) { int c, x; scanf("%d %d", &c, &x); if(c == 1) { node u; while(x--) { u = Q.top(); has[u.u] = 1; Q.pop(); } printf("%d\n", u.u); } else { int y = x; for(int i = 17; i >= 0; i--) if(par[y][i]) { if(has[par[y][i]]) y = par[y][i]; } has[y] = 0; printf("%d\n",dep[x] - dep[y]); Q.push({y, prior[y]}); } } }
Compilation message
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
1 | Correct | 0 ms | 12276 KB | Output is correct |
2 | Correct | 149 ms | 14412 KB | Output is correct |
3 | Correct | 69 ms | 14412 KB | Output is correct |
4 | Correct | 0 ms | 12276 KB | Output is correct |
5 | Correct | 0 ms | 12276 KB | Output is correct |
6 | Correct | 3 ms | 12276 KB | Output is correct |
7 | Correct | 0 ms | 12276 KB | Output is correct |
8 | Correct | 3 ms | 12276 KB | Output is correct |
9 | Correct | 9 ms | 12408 KB | Output is correct |
10 | Correct | 29 ms | 12804 KB | Output is correct |
11 | Correct | 136 ms | 14412 KB | Output is correct |
12 | Correct | 96 ms | 14412 KB | Output is correct |
13 | Correct | 126 ms | 14412 KB | Output is correct |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
1 | Correct | 59 ms | 14180 KB | Output is correct |
2 | Correct | 276 ms | 18584 KB | Output is correct |
3 | Correct | 123 ms | 15840 KB | Output is correct |
4 | Correct | 103 ms | 14164 KB | Output is correct |
5 | Correct | 96 ms | 14040 KB | Output is correct |
6 | Correct | 99 ms | 14040 KB | Output is correct |
7 | Correct | 106 ms | 13616 KB | Output is correct |
8 | Correct | 36 ms | 14176 KB | Output is correct |
9 | Correct | 279 ms | 19000 KB | Output is correct |
10 | Correct | 243 ms | 18580 KB | Output is correct |
11 | Correct | 196 ms | 18580 KB | Output is correct |
12 | Correct | 229 ms | 17340 KB | Output is correct |
13 | Correct | 136 ms | 21184 KB | Output is correct |
14 | Correct | 106 ms | 15840 KB | Output is correct |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
1 | Correct | 96 ms | 15620 KB | Output is correct |
2 | Correct | 279 ms | 17416 KB | Output is correct |
3 | Correct | 186 ms | 20536 KB | Output is correct |
4 | Correct | 219 ms | 18060 KB | Output is correct |
5 | Correct | 159 ms | 17732 KB | Output is correct |
6 | Correct | 196 ms | 17732 KB | Output is correct |
7 | Correct | 173 ms | 16792 KB | Output is correct |
8 | Correct | 99 ms | 20532 KB | Output is correct |
9 | Correct | 179 ms | 19000 KB | Output is correct |
10 | Correct | 279 ms | 18588 KB | Output is correct |
11 | Correct | 279 ms | 18592 KB | Output is correct |
12 | Correct | 263 ms | 17408 KB | Output is correct |
13 | Correct | 289 ms | 22100 KB | Output is correct |
14 | Correct | 143 ms | 15844 KB | Output is correct |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
1 | Correct | 229 ms | 18996 KB | Output is correct |
2 | Correct | 243 ms | 17408 KB | Output is correct |
3 | Correct | 189 ms | 22096 KB | Output is correct |
4 | Correct | 226 ms | 18996 KB | Output is correct |
5 | Correct | 239 ms | 18588 KB | Output is correct |
6 | Correct | 206 ms | 18588 KB | Output is correct |
7 | Correct | 289 ms | 17416 KB | Output is correct |
8 | Correct | 216 ms | 22100 KB | Output is correct |
9 | Correct | 99 ms | 15844 KB | Output is correct |