#u1009. 动态逆序对计数
动态逆序对计数
问题描述
给定一个初始为空的序列S,你需要处理以下三种操作:
1 x- 在序列末尾添加元素x2- 删除序列末尾的元素(保证序列非空)3- 查询当前序列中所有逆序对的数量
逆序对定义为序列中满足i < j且S[i] > S[j]的所有(i,j)对。
要求实现一个程序,处理最多500,000次操作,所有x的范围在1到500,000之间。
输入输出格式
输入格式:
- 第一行包含一个整数Q,表示操作数量
- 接下来Q行,每行一个操作
输出格式:
- 对于每个操作3,输出当前序列的逆序对数量
-
示例1
输入:
5
1 2
1 3
3
1 1
3
输出:
1
3
示例2
输入:
7
1 5
1 4
3
1 3
3
2
3
输出:
1
3
1
示例3
输入:
8
1 1
1 1
1 1
3
1 2
3
2
3
输出:
0
3
0
示例4
输入:
10
1 10
1 9
1 8
1 7
3
1 6
3
2
2
3
输出:
6
10
6
示例5
输入:
6
1 100000
1 99999
3
1 100000
3
2
输出:
1
1
1