题目描述
给定一个长度为N的整数序列:A1,A2,...,AN。按照顺序进行Q次操作。第i次操作由两个整数Xi和Yi描述。在这个操作中,我们将选择以下两个动作之一并执行它:
- 交换AXi和AYi的值
- 什么也不做
总共有2Q种方法来执行这些操作。计算所有这些操作所产生的最终序列的逆序数之和,对109+7取模。
这里,序列P1,P2,...,PM的逆序数是满足1leqi<jleqM且Pi>Pj的整数对(i,j)的数量。
约束条件
- 1leqNleq3000
- 0leqQleq3000
- 0leqAileq109(1leqileqN)
- 1leqXi,YileqN(1leqileqQ)
- XineqYi(1leqileqQ)
- 输入中的所有值均为整数。
输入
从标准输入读入数据,输入格式如下:
N Q
A1
:
AN
X1 Y1
:
XQ YQ
输出
输出最终序列的逆序数之和,对109+7取模。
样例输入 1
3 2
1
2
3
1 2
1 3
样例输出 1
6
有四种操作方式:
- 在第一次和第二次操作中都什么也不做。最终序列将是1,2,3,逆序数为0。
- 在第一次操作中什么也不做,在第二次操作中执行交换。最终序列将是3,2,1,逆序数为3。
- 在第一次操作中执行交换,在第二次操作中什么也不做。最终序列将是2,1,3,逆序数为1。
- 在第一次和第二次操作中都执行交换。最终序列将是3,1,2,逆序数为2。
这些逆序数的和为0+3+1+2=6。
样例输入 2
5 3
3
2
3
1
4
1 5
2 3
4 2
样例输出 2
36
样例输入 3
9 5
3
1
4
1
5
9
2
6
5
3 5
8 9
7 9
3 2
3 8
样例输出 3
425