/ Vijos / 题库 /

动态逆序对[2]

动态逆序对[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**

信息

ID
2596
难度
(无)
分类
数据结构 | 线段树 点击显示
标签
(无)
递交数
0
已通过
0
通过率
?
被复制
2
上传者