#P0501. 逆序对奇偶性判断

逆序对奇偶性判断

问题背景

我们称一个长度为 nn 的数列是一个排列,当且仅当整数 1n1 \sim n 在这个数列中恰好各出现了一次。比如:

  • 数列 [3,2,1][3, 2, 1][4,5,2,1,3][4, 5, 2, 1, 3][5,3,2,4,1,6][5, 3, 2, 4, 1, 6] 都是排列;
  • 数列 [2,3,4][2, 3, 4][1,1,2][1, 1, 2][2,1,4,5][2, 1, 4, 5] 都不是排列。

对于数列 aa 中的一对下标对 (i,j)(i, j),若满足 i<ji \lt jai>aja_i \gt a_j,则称下标对 (i,j)(i, j) 构成一对逆序对。一个数列的逆序对数量即为数列中存在的逆序对总数。

题目描述

本题中,初始时给你一个长度为 nn 的数列 a1,a2,,an(1ain)a_1, a_2, \ldots, a_n(1 \le a_i \le n),且保证数列 aa 是一个排列。

接下来有 mm 次操作,第 ii 次操作会给你两个整数 lil_irir_i1lirin1 \le l_i \le r_i \le n),你需要翻转数列中从第 lil_i 个数到第 rir_i 个数对应的连续子序列(对应下标区间 [li,ri][l_i, r_i]),然后判断翻转后的数列的逆序对数量是奇数还是偶数。

注意,这里的每次操作都是有传递性的,第 i(2)i(\ge 2) 次操作翻转的数列是第 i1i-1 次操作后的那个数列。举个例子,若当前数列 a=[1,2,3,4,5,6,7]a = [1, 2, 3, 4, 5, 6, 7],则:

  • 11 次操作 l1=2,l2=4l_1 = 2, l_2 = 4,翻转第 2244 个数对应的连续子序列后,数列 a=[1,4,3,2,5,6,7]a = [1, 4, 3, 2, 5, 6, 7]
  • 22 次操作 l2=3,r2=6l_2 = 3, r_2 = 6,翻转第 3366 个数对应的连续子序列后,数列 a=[1,4,6,5,2,3,7]a = [1, 4, 6, 5, 2, 3, 7]

输入格式

第一行,一个整数 n(1n2000)n(1 \le n \le 2000),表示数列长度。

第二行,nn 个整数 a1,a2,,an(1ain)a_1, a_2, \ldots, a_n(1 \le a_i \le n),表示初始的数列。数据保证这是一个排列。

第三行,一个整数 m(1m2105)m(1 \le m \le 2 \cdot 10^5),表示操作次数。

接下来 mm 行,每行包含两个整数 lil_irir_i,以空格分隔,表示一次操作(1lirin1 \le l_i \le r_i \le n)。

输出格式

对于每次操作,输出一行。如果该次操作后数列 aa 的逆序对数量是奇数,输出 odd;否则,输出 even

样例

3
1 2 3
2
1 2
2 3
odd
even
4
1 2 4 3
4
1 1
1 4
1 4
2 3
odd
odd
odd
even

说明/提示

样例解释

样例1:

  • 11 次操作后数列 a=[2,1,3]a = [2, 1, 3],有 11 个逆序对:(1,2)(1, 2)
  • 22 次操作后数列 a=[2,3,1]a = [2, 3, 1],有 22 个逆序对:(1,3),(2,3)(1, 3), (2, 3).

样例2:

  • 11 次操作后数列 a=[1,2,4,3]a = [1, 2, 4, 3],有 11 个逆序对:(3,4)(3,4)
  • 22 次操作后数列 a=[3,4,2,1]a = [3, 4, 2, 1],有 55 个逆序对:(1,3),(1,4),(2,3),(2,4),(3,4)(1,3),(1,4),(2,3),(2,4),(3,4)
  • 33 次操作后数列 a=[1,2,4,3]a = [1, 2, 4, 3],有 11 个逆序对:(3,4)(3,4)
  • 44 次操作后数列 a=[1,4,2,3]a = [1, 4, 2, 3],有 22 个逆序对:(2,3),(2,4)(2,3),(2,4).

(注:这里的逆序对对应的都是下标)

数据规模与约定

  • 对于 20%20\% 的数据,n20;m200n \le 20; m \le 200
  • 对于 50%50\% 的数据,n200;m2000n \le 200; m \le 2000
  • 对于 100%100\% 的数据,1n2000;1m21051 \le n \le 2000; 1 \le m \le 2 \cdot 10^5