动态逆序对[2]
时间限制:1秒 内存限制:256M
【题目描述】
对于序列 \(A[i]\),它的逆序对数定义为满足:\(i < j\),且 \(A[i] > A[j]\) 的数对\((i,j)\)的个数。现在给 \(1\) 到 \(n\) 的一个排列,定义如下两个操作:
1、SWAP \(a\ b\) 交换元素 \(a\) 和元素 \(b\) 的位置
2、DELE \(a\) 删除元素 \(a\)
你的任务是在每操作后统计整个序列的逆序对数。
【输入格式】
输入第一行包含两个整数 \(n\) 和 \(m\),即初始元素的个数和操作数目。
以下 \(n\) 行每行包含一个 \(1\) 到 \(n\) 之间的正整数,即初始排列。
以下 \(m\) 行每行一个正整数,依次为每次的操作:1 \(a\ b\) 表示交换元素 \(a\) 和元素 \(b\) 的位置,2 \(a\) 表示删除元素 \(a\)。其中 \(1≤a,b≤n\),操作中可能有 \(a=b\) 的情况。
【输出格式】
包含 \(m\) 行,每行一个整数,表示对应操作后序列逆续对的数量。
【输入输出样例】
Input
10 5
1
6
8
10
9
4
5
7
3
2
2 9
1 4 2
1 1 2
2 1
1 8 6
Output
21
18
19
15
16
【数据限制】
对于 \(20\%\) 的数据,\(0<n≤1000\),\(0<m≤500\)
对于 \(50\%\) 的数据,\(0<n≤10000\),\(0<m≤5000\)
对于 \(100\%\) 的数据,\(0<n≤100000\),\(0<m≤50000\),\(0≤A[i]≤1000000\)
【来源】
Mr.he**