P9995 [Ynoi2000] rspcn

题目描述

给定整数序列 $a_1,\dots,a_n$ ,共 $m$ 次操作; 每次操作给出 $l,r,x$ ,首先进行修改,然后查询 $a_1,\dots,a_x$ 中有多少种不同的值。 若 $l\le r$ ,则进行的修改是将 $a_l,\dots,a_r$ 从小到大排序;否则进行的修改是将 $a_r,\dots,a_l$ 从大到小排序。

输入格式

第一行两个整数 $n,m$ ; 第二行 $n$ 个整数 $a_1,\dots,a_n$ ; 接下来 $m$ 行,每行三个整数 $l\oplus c,r\oplus c,x\oplus c$ ,依次表示每次操作,其中 $\oplus$ 是按位异或,$c$ 是上次操作的查询的答案(特别地,对于第一次操作,$c=0$)。

输出格式

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

说明/提示

Idea:ccz181078,Solution:ccz181078,Code:ccz181078,Data:ccz181078 对于 $20\%$ 的数据,满足 $n,m\le 10^3$。 对于另外 $20\%$ 的数据,满足 $a_i\le 10$。 对于另外 $20\%$ 的数据,满足 $a_i\le 100$。 对于另外 $20\%$ 的数据,满足 $n,m\le 10^5$。 对于 $100\%$ 的数据,满足 $1\le a_i\le n$,$1\le l,r,x\le n$,$1\le n,m\le 10^6$。