#include <bits/stdc++.h>
#define ll long long
#define pii pair <ll, ll>
#define nd second
#define st first
#define rep(i, n, m) for (ll i = n; i <= m; i ++)
#define rrep(i, n, m) for (ll i = n; i >= m; i --)
using namespace std;
const long long N = 2e5 + 5;
int n, q, a[N], full[N], mi[N], up[20][N], pos[N];
vector <int> d[N], order;
void dfs(int u) {
mi[u] = u;
for (int v: d[u])
dfs(v), mi[u] = min(mi[u], mi[v]);
}
void dfs2(int u) {
for (int v: d[u]) dfs2(v);
order.push_back(u);
}
priority_queue <pii, vector <pii>, greater <pii>> st;
void del(int u) {
int cnt = 0;
rrep(i, 19, 0) if (full[up[i][u]])
u = up[i][u], cnt += 1 << i;
full[u] = false;
st.push({pos[u], u});
cout << cnt << '\n';
}
int cur = 0;
void add(int k) {
int lst = 0;
while (st.size() && k) {
lst = st.top().nd;
st.pop();
k --;
full[lst] = true;
}
while (k) k --, lst = order[cur ++], full[lst] = true;
cout << lst << '\n';
}
int main() {
ios_base::sync_with_stdio(0);
cin.tie(0); cout.tie(0);
//freopen("A.ans", "w", stdout);
cin >> n >> q;
rep(i, 1, n) {
int p; cin >> p;
d[p].push_back(i);
up[0][i] = p;
}
dfs(0);
rep(i, 1, 19) rep(j, 1, n)
up[i][j] = up[i - 1][up[i - 1][j]];
auto cmp = [&] (int u, int v) { return mi[u] < mi[v]; };
rep(i, 1, n) sort(d[i].begin(), d[i].end(), cmp);
dfs2(0);
rep(i, 0, order.size() - 1) pos[order[i]] = i;
int t, x;
while (q --) {
cin >> t >> x;
if (t == 1) add(x);
if (t == 2) del(x);
}
return 0;
}
Compilation message
ballmachine.cpp: In function 'int main()':
ballmachine.cpp:6:39: warning: comparison of integer expressions of different signedness: 'long long int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
6 | #define rep(i, n, m) for (ll i = n; i <= m; i ++)
......
67 | rep(i, 0, order.size() - 1) pos[order[i]] = i;
| ~~~~~~~~~~~~~~~~~~~~~~
ballmachine.cpp:67:5: note: in expansion of macro 'rep'
67 | rep(i, 0, order.size() - 1) pos[order[i]] = i;
| ^~~
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
5 ms |
5076 KB |
Output is correct |
2 |
Correct |
106 ms |
13160 KB |
Output is correct |
3 |
Correct |
70 ms |
12660 KB |
Output is correct |
4 |
Correct |
4 ms |
5088 KB |
Output is correct |
5 |
Correct |
5 ms |
5188 KB |
Output is correct |
6 |
Correct |
5 ms |
5292 KB |
Output is correct |
7 |
Correct |
5 ms |
5164 KB |
Output is correct |
8 |
Correct |
6 ms |
5204 KB |
Output is correct |
9 |
Correct |
9 ms |
5716 KB |
Output is correct |
10 |
Correct |
26 ms |
7372 KB |
Output is correct |
11 |
Correct |
108 ms |
13608 KB |
Output is correct |
12 |
Correct |
65 ms |
12652 KB |
Output is correct |
13 |
Correct |
115 ms |
12724 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
26 ms |
8704 KB |
Output is correct |
2 |
Correct |
172 ms |
20124 KB |
Output is correct |
3 |
Correct |
66 ms |
16020 KB |
Output is correct |
4 |
Correct |
55 ms |
10260 KB |
Output is correct |
5 |
Correct |
78 ms |
10020 KB |
Output is correct |
6 |
Correct |
58 ms |
9572 KB |
Output is correct |
7 |
Correct |
52 ms |
9424 KB |
Output is correct |
8 |
Correct |
28 ms |
8704 KB |
Output is correct |
9 |
Correct |
152 ms |
20516 KB |
Output is correct |
10 |
Correct |
145 ms |
20120 KB |
Output is correct |
11 |
Correct |
120 ms |
19200 KB |
Output is correct |
12 |
Correct |
153 ms |
18720 KB |
Output is correct |
13 |
Correct |
112 ms |
20540 KB |
Output is correct |
14 |
Correct |
77 ms |
16016 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
76 ms |
13500 KB |
Output is correct |
2 |
Correct |
146 ms |
20192 KB |
Output is correct |
3 |
Correct |
153 ms |
20352 KB |
Output is correct |
4 |
Correct |
101 ms |
17848 KB |
Output is correct |
5 |
Correct |
116 ms |
17500 KB |
Output is correct |
6 |
Correct |
84 ms |
17476 KB |
Output is correct |
7 |
Correct |
95 ms |
16484 KB |
Output is correct |
8 |
Correct |
114 ms |
20432 KB |
Output is correct |
9 |
Correct |
153 ms |
21832 KB |
Output is correct |
10 |
Correct |
124 ms |
21428 KB |
Output is correct |
11 |
Correct |
197 ms |
21372 KB |
Output is correct |
12 |
Correct |
187 ms |
20176 KB |
Output is correct |
13 |
Correct |
173 ms |
24988 KB |
Output is correct |
14 |
Correct |
84 ms |
18276 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
206 ms |
20788 KB |
Output is correct |
2 |
Correct |
160 ms |
20096 KB |
Output is correct |
3 |
Correct |
90 ms |
22536 KB |
Output is correct |
4 |
Correct |
204 ms |
20748 KB |
Output is correct |
5 |
Correct |
155 ms |
20172 KB |
Output is correct |
6 |
Correct |
120 ms |
19344 KB |
Output is correct |
7 |
Correct |
149 ms |
20180 KB |
Output is correct |
8 |
Correct |
100 ms |
22516 KB |
Output is correct |
9 |
Correct |
78 ms |
16008 KB |
Output is correct |