#P9995. [Ynoi2000] rspcn

[Ynoi2000] rspcn

题目描述

给定整数序列 a1,…,ana_1,\dots,a_n ,共 mm 次操作;

每次操作给出 l,r,xl,r,x ,首先进行修改,然后查询 a1,…,axa_1,\dots,a_x 中有多少种不同的值。

若 l≤rl\le r ,则进行的修改是将 al,…,ara_l,\dots,a_r 从小到大排序;否则进行的修改是将 ar,…,ala_r,\dots,a_l 从大到小排序。

输入格式

第一行两个整数 n,mn,m ;

第二行 nn 个整数 a1,…,ana_1,\dots,a_n ;

接下来 mm 行,每行三个整数 l⊕c,r⊕c,x⊕cl\oplus c,r\oplus c,x\oplus c ,依次表示每次操作,其中 ⊕\oplus 是按位异或,cc 是上次操作的查询的答案(特别地,对于第一次操作,c=0c=0)。

输出格式

共 mm 行,每行一个整数,依次表示每次操作的查询的答案。

9 7
2 2 8 8 2 8 2 1 3
2 2 2
3 7 6
6 7 1
9 6 7
10 11 10
7 0 5
5 1 7
1
2
1
2
3
2
2

提示

Idea:ccz181078,Solution:ccz181078,Code:ccz181078,Data:ccz181078

对于 20%20\% 的数据,满足 n,m≤103n,m\le 10^3。

对于另外 20%20\% 的数据,满足 ai≤10a_i\le 10。

对于另外 20%20\% 的数据,满足 ai≤100a_i\le 100。

对于另外 20%20\% 的数据,满足 n,m≤105n,m\le 10^5。

对于 100%100\% 的数据,满足 1≤ai≤n1\le a_i\le n,1≤l,r,x≤n1\le l,r,x\le n,1≤n,m≤1061\le n,m\le 10^6。