# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
67982 | 2018-08-15T16:29:23 Z | thebes | Ball Machine (BOI13_ballmachine) | C++14 | 253 ms | 27988 KB |
#include <bits/stdc++.h> using namespace std; const int MN=1e5+5,LG=19; int sp[MN][LG], N, Q, i, j, x, y, mn[MN], p[MN], nxt, fl[MN], rt; priority_queue<tuple<int,int>> q; vector<int> adj[MN]; int dfs(int n){ mn[n] = n; for(auto v : adj[n]) mn[n] = min(mn[n], dfs(v)); return mn[n]; } void ord(int n){ sort(adj[n].begin(),adj[n].end(),[](int i,int j){return mn[i]<mn[j];}); for(auto v : adj[n]) ord(v); p[n] = nxt--; q.push({p[n],n}); } int main(){ for(scanf("%d%d",&N,&Q),i=1;i<=N;i++){ scanf("%d",&x); sp[i][0]=x; adj[x].push_back(i); if(x == 0) rt = i; } dfs(rt), ord(rt); for(j=1;j<LG;j++){ for(i=1;i<=N;i++) sp[i][j]=sp[sp[i][j-1]][j-1]; } for(;Q;Q--){ scanf("%d%d",&x,&y); if(x == 1){ int ans = 0; while(q.size()&&y){ fl[get<1>(q.top())]=1; ans=get<1>(q.top()); q.pop(); y--; } printf("%d\n",ans); } else{ int ans = 0; for(i=LG-1;i>=0;i--) if(fl[sp[y][i]]) ans+=1<<i, y=sp[y][i]; printf("%d\n",ans); fl[y] = 0; q.push({p[y],y}); } } return 0; }
Compilation message
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 4 ms | 2680 KB | Output is correct |
2 | Correct | 127 ms | 10984 KB | Output is correct |
3 | Correct | 83 ms | 10984 KB | Output is correct |
4 | Correct | 4 ms | 10984 KB | Output is correct |
5 | Correct | 5 ms | 10984 KB | Output is correct |
6 | Correct | 5 ms | 10984 KB | Output is correct |
7 | Correct | 5 ms | 10984 KB | Output is correct |
8 | Correct | 7 ms | 10984 KB | Output is correct |
9 | Correct | 12 ms | 10984 KB | Output is correct |
10 | Correct | 30 ms | 10984 KB | Output is correct |
11 | Correct | 115 ms | 11124 KB | Output is correct |
12 | Correct | 77 ms | 11124 KB | Output is correct |
13 | Correct | 103 ms | 11140 KB | Output is correct |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 65 ms | 11140 KB | Output is correct |
2 | Correct | 168 ms | 20796 KB | Output is correct |
3 | Correct | 97 ms | 20796 KB | Output is correct |
4 | Correct | 83 ms | 20796 KB | Output is correct |
5 | Correct | 85 ms | 20796 KB | Output is correct |
6 | Correct | 72 ms | 20796 KB | Output is correct |
7 | Correct | 79 ms | 20796 KB | Output is correct |
8 | Correct | 48 ms | 20796 KB | Output is correct |
9 | Correct | 174 ms | 21196 KB | Output is correct |
10 | Correct | 229 ms | 21196 KB | Output is correct |
11 | Correct | 190 ms | 21196 KB | Output is correct |
12 | Correct | 195 ms | 21196 KB | Output is correct |
13 | Correct | 158 ms | 24532 KB | Output is correct |
14 | Correct | 102 ms | 24532 KB | Output is correct |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 75 ms | 24532 KB | Output is correct |
2 | Correct | 196 ms | 24532 KB | Output is correct |
3 | Correct | 165 ms | 24532 KB | Output is correct |
4 | Correct | 152 ms | 24532 KB | Output is correct |
5 | Correct | 120 ms | 24532 KB | Output is correct |
6 | Correct | 121 ms | 24532 KB | Output is correct |
7 | Correct | 120 ms | 24532 KB | Output is correct |
8 | Correct | 150 ms | 24532 KB | Output is correct |
9 | Correct | 232 ms | 24532 KB | Output is correct |
10 | Correct | 235 ms | 24532 KB | Output is correct |
11 | Correct | 188 ms | 24532 KB | Output is correct |
12 | Correct | 221 ms | 24532 KB | Output is correct |
13 | Correct | 253 ms | 27988 KB | Output is correct |
14 | Correct | 154 ms | 27988 KB | Output is correct |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 180 ms | 27988 KB | Output is correct |
2 | Correct | 205 ms | 27988 KB | Output is correct |
3 | Correct | 139 ms | 27988 KB | Output is correct |
4 | Correct | 243 ms | 27988 KB | Output is correct |
5 | Correct | 231 ms | 27988 KB | Output is correct |
6 | Correct | 199 ms | 27988 KB | Output is correct |
7 | Correct | 213 ms | 27988 KB | Output is correct |
8 | Correct | 211 ms | 27988 KB | Output is correct |
9 | Correct | 111 ms | 27988 KB | Output is correct |