A1-2017级算法上机第一次练习赛 H 模式寻对

时间:2021-05-08 09:51:04

概念回顾

逆序对:数列a[0],a[1],a[2]…中的任意两个数a[i],a[j]

 

如果i<j, 并且a[i]>a[j], 

 

那么我们就说这两个数构成了一个逆序对。

 

逆序数:一个数列中逆序对的总数。

题目描述

输入一个正整数n,随后给出一个长度为n的整数序列 a[0],a[1],a[2],...,a[n-1] ,再给定多组数组下标范围,求给定序列的逆序数。

输入

多组测试数据(不超过10),以EOF结尾。

每组测试数据第一行为数组长度n,正整数,代表数组长度,数据范围为0<n<=10000

第二行为n个整数,为数组an,保证数组中每个数在int范围内。

第三行为一个整数t,代表t次查询,0<t<=1000

接下来t行,每行两个数xy,代表数组下标区间,保证0<=x<=y<=n-1

输出

对于每次查询,输出一行,每行一个数,代表所求逆序数。

具体参见样例。

输入样例

5 
4 8 4 0 0 
3 
0 4 
2 4 
0 2 

输出样例

7 
2 
1 

提示

使用时间复杂度为O(n2)O(n2) 的算法会超时。

联系下归并排序~

思路