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 ", findfa(x)); 23 } 24 return 0; 25 }