Problem
Mato的文件管理
Description
同学从各路神犇以各种方式收集了许多资料,这些资料一共有份,每份有一个大小和一个编号。为了防止他人偷拷,这些资料都是加密过的,只能用自己写的程序才能访问。每天随机选一个区间,他今天就看编号在此区间内的这些资料。有一个习惯,他总是从文件大小从小到大看资料。他先把要看的文件按编号顺序依次拷贝出来,再用他写的排序程序给文件大小排序。排序程序可以在单位时间内交换个相邻的文件(因为加密需要,不能随机访问)。想要使文件交换次数最小,你能告诉他每天需要交换多少次吗?
Input
第一行一个正整数,表示的资料份数。
第二行由空格隔开的个正整数,第个表示编号为的资料的大小。
第三行一个正整数,表示会看几天资料。
之后行每行两个正整数,表示这天看区间的文件。
Output
Sample Input
1 | 4 |
Sample Output
1 | 0 |
Hint
样例解释
第一天,不需要交换
第二天,可以把号交换次移到最后。
数据规模和约定
Source
By taorunz
标签:莫队
树状数组
Solution
因此此问题等价于求区间逆序对数,傻逼莫队水过。
离线下所有询问,每次加入或删除一个数用树状数组维护,计算会增加或减少多少对逆序对,更新答案即可。
Code
1 |
|