问题背景
我们称一个长度为 n 的数列是一个排列,当且仅当整数 1∼n 在这个数列中恰好各出现了一次。比如:
- 数列 [3,2,1]、[4,5,2,1,3]、[5,3,2,4,1,6] 都是排列;
- 数列 [2,3,4]、[1,1,2]、[2,1,4,5] 都不是排列。
对于数列 a 中的一对下标对 (i,j),若满足 i<j 且 ai>aj,则称下标对 (i,j) 构成一对逆序对。一个数列的逆序对数量即为数列中存在的逆序对总数。
题目描述
本题中,初始时给你一个长度为 n 的数列 a1,a2,…,an(1≤ai≤n),且保证数列 a 是一个排列。
接下来有 m 次操作,第 i 次操作会给你两个整数 li 和 ri(1≤li≤ri≤n),你需要翻转数列中从第 li 个数到第 ri 个数对应的连续子序列(对应下标区间 [li,ri]),然后判断翻转后的数列的逆序对数量是奇数还是偶数。
注意,这里的每次操作都是有传递性的,第 i(≥2) 次操作翻转的数列是第 i−1 次操作后的那个数列。举个例子,若当前数列 a=[1,2,3,4,5,6,7],则:
- 第 1 次操作 l1=2,l2=4,翻转第 2 到 4 个数对应的连续子序列后,数列 a=[1,4,3,2,5,6,7];
- 第 2 次操作 l2=3,r2=6,翻转第 3 到 6 个数对应的连续子序列后,数列 a=[1,4,6,5,2,3,7]。
输入格式
第一行,一个整数 n(1≤n≤2000),表示数列长度。
第二行,n 个整数 a1,a2,…,an(1≤ai≤n),表示初始的数列。数据保证这是一个排列。
第三行,一个整数 m(1≤m≤2⋅105),表示操作次数。
接下来 m 行,每行包含两个整数 li 和 ri,以空格分隔,表示一次操作(1≤li≤ri≤n)。
输出格式
对于每次操作,输出一行。如果该次操作后数列 a 的逆序对数量是奇数,输出 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:
- 第 1 次操作后数列 a=[2,1,3],有 1 个逆序对:(1,2);
- 第 2 次操作后数列 a=[2,3,1],有 2 个逆序对:(1,3),(2,3).
样例2:
- 第 1 次操作后数列 a=[1,2,4,3],有 1 个逆序对:(3,4);
- 第 2 次操作后数列 a=[3,4,2,1],有 5 个逆序对:(1,3),(1,4),(2,3),(2,4),(3,4);
- 第 3 次操作后数列 a=[1,2,4,3],有 1 个逆序对:(3,4);
- 第 4 次操作后数列 a=[1,4,2,3],有 2 个逆序对:(2,3),(2,4).
(注:这里的逆序对对应的都是下标)
数据规模与约定
- 对于 20% 的数据,n≤20;m≤200
- 对于 50% 的数据,n≤200;m≤2000
- 对于 100% 的数据,1≤n≤2000;1≤m≤2⋅105