#117. 蒲公英

蒲公英

在乡下的小路旁种着许多蒲公英,而我们的问题正是与这些蒲公英有关。

为了简化起见,我们把所有的蒲公英看成一个长度为 n 的序列a_1,a_2,,a_na\_1,a\_2,…,a\_n,其中a_ia\_i为一个正整数,表示第 i 棵蒲公英的种类编号。

而每次询问一个区间 [l,r] ,你需要回答区间里出现次数最多的是哪种蒲公英,如果有若干种蒲公英出现次数相同,则输出种类编号最小的那个。

输入格式

第一行两个整数n,m,表示有 n 株蒲公英,m 次询问。

接下来一行 n 个空格隔开的整数a_ia\_i,表示蒲公英的种类。

再接下来 m 行每行两个整数l_0,r_0l\_0,r\_0,我们令上次询问的结果为 x(如果这是第一次询问,则 x=0)。

令l=(l_0l\_0+x-1) mod n+1,r=(r_0r\_0+x-1) mod n+1,如果l>r,则交换l,r。

最终的询问区间为[l,r]。

输出格式

输出 m 行。

每行一个整数,表示每次询问的结果。

数据范围

1n400001 \le n \le 40000,
1m500001 \le m \le 50000,
1a_i1091 \le a\_i \le 10^9

输入样例:

6 3 
1 2 3 2 1 2 
1 5 
3 6 
1 5

输出样例:

1 
2 
1

来源

  • 《算法竞赛进阶指南》
  • acwing 可能含有视频讲解