There are nn points in an array with index from 11 to nn, and there are two operations to those points.
1: 1 \ x1 x marking the point xx is not available
2: 2 \ x2 x query for the index of the first available point after that point (including xx itself) .
样例输入
5 3 1 2 2 2 2 1
样例输出
3 1
1 #include <bits/stdc++.h>
2
3 using namespace std;
4
5 unordered_map<int, int> fa;
6
7 int findfa(int x)
8 {
9 if (!fa.count(x)) return x;
10 return fa[x] = findfa(fa[x]);
11 }
12
13 int main()
14 {
15 int n, q;
16 int op, x;
17 scanf("%d %d", &n, &q);
18 while (q--)
19 {
20 scanf("%d %d", &op, &x);
21 if(op == 1) fa[x] = findfa(x + 1);
22 else printf("%d\n", findfa(x));
23 }
24 return 0;
25 }
