「BZOJ3295」[CQOI2011] 动态逆序对

2014年6月17日6,4114

Description

对于序列A,它的逆序对数定义为满足i<j,且Ai>Aj的数对(i,j)的个数。给1到n的一个排列,按照某种顺序依次删除m个元素,你的任务是在每次删除一个元素之前统计整个序列的逆序对数。

Input

输入第一行包含两个整数nm,即初始元素的个数和删除的元素个数。以下n行每行包含一个1到n之间的正整数,即初始排列。以下m行每行一个正整数,依次为每次删除的元素。

Output

输出包含m行,依次为删除每个元素之前,逆序对的个数。

Sample Input

5 4
1
5
3
4
2
5
1
4
2

Sample Output

5
2
2
1
样例解释
(1,5,3,4,2)(1,3,4,2)(3,4,2)(3,2)(3)。

HINT

N<=100000 M<=50000

题解

树状数组套线段树

删除某个数,只要统计它之前还存在的比它大的数的个数,和之后还存在的比它小的数的个数

 

说点什么

提醒
avatar
zld3794955

Orzhzwer学长= =我原来写树状数组套主席树一直爆内存只好用CDQ分治水了T T