AT_abc324_g [ABC324G] Generate Arrays
题目描述
高桥君有一个长度为 N 的数列 A=(A1,A2,…,AN)。A 是 1,2,…,N 的一个排列。
高桥君要进行 Q 次操作,生成 1+Q 个数列。将 0 号数列定义为 A,高桥君从此开始一系列操作。第 i 次操作(1≤i≤Q)用整数三元组 (ti,si,xi) 表示,对应如下操作(也请参考输入输出样例的说明):
- 当 ti=1 时,高桥君从 si 号(0≤si<i)数列中,去除第 xi 个元素之后的所有元素,并将这些被去除的元素按原顺序组成新的 i 号数列。
- 当 ti=2 时,高桥君从 si 号(0≤si<i)数列中,去除所有值大于 xi 的元素,并将这些被去除的元素按原顺序组成新的 i 号数列。
注意,对于长度为 L 的数列 X,X 的所有元素都被认为是“第 0 个元素之后的元素”。对于任意 l≥L,X 的所有元素都不是“第 l 个元素之后的元素”。
请你求出对于 i=1,2,…,Q,每次操作结束后,第 i 号数列的长度。
输入格式
输入按以下格式从标准输入给出。
N A1 A2 … AN Q t1 s1 x1 t2 s2 x2 ⋮ tQ sQ xQ
输出格式
请输出 Q 行。第 i 行(1≤i≤Q)输出第 i 次操作结束后第 i 号数列的长度。
输入输出样例 #1
输入 #1
10
1 8 7 4 5 6 3 2 9 10
5
2 0 4
1 1 2
2 0 2
2 2 5
1 0 1
输出 #1
6
4
2
3
1
输入输出样例 #2
输入 #2
8
6 7 8 4 5 1 3 2
5
2 0 0
1 1 0
2 2 0
1 3 8
2 2 3
输出 #2
8
8
8
0
0
输入输出样例 #3
输入 #3
30
20 6 13 11 29 30 9 10 16 5 8 25 1 19 12 18 7 2 4 27 3 22 23 24 28 21 14 26 15 17
10
1 0 22
1 0 21
2 0 15
1 0 9
1 3 6
2 3 18
1 6 2
1 0 1
2 5 20
2 7 26
输出 #3
8
1
8
4
2
5
3
8
1
1
说明/提示
约束条件
- 1≤N≤2×105
- 1≤Ai≤N (1≤i≤N)
- Ai=Aj (1≤i<j≤N)
- 1≤Q≤2×105
- ti=1,2 (1≤i≤Q)
- 0≤si<i (1≤i≤Q)
- 0≤xi≤N (1≤i≤Q)
- 输入均为整数
样例解释 1
一开始,高桥君有长度为 10 的数列 A=(1,8,7,4,5,6,3,2,9,10)。高桥君以 0 号数列 A=(1,8,7,4,5,6,3,2,9,10) 开始一系列操作。第 1 次操作,从 0 号数列中去除大于 4 的元素 8,7,5,6,9,10,并将这些元素组成新的 1 号数列。操作后,0,1 号数列分别为 (1,4,3,2),(8,7,5,6,9,10)。第 2 次操作,从 1 号数列中去除第 2 个元素之后的元素 5,6,9,10,并将这些元素组成新的 2 号数列。操作后,0,1,2 号数列分别为 (1,4,3,2),(8,7),(5,6,9,10)。第 3 次及以后的操作,每次操作结束后 0,1,2,…,i 号数列分别如下:
- (1,2),(8,7),(5,6,9,10),(4,3)
- (1,2),(8,7),(5),(4,3),(6,9,10)
- (1),(8,7),(5),(4,3),(6,9,10),(2)
对于 i=1,2,…,5,每次操作结束后第 i 号数列的长度分别为 6,4,2,3,1,请按顺序输出。
样例解释 2
操作结果可能会出现空数列。
由 ChatGPT 4.1 翻译