#SFJSJJZN3116. 蒲公英

蒲公英

题目描述

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

为了简化起见,我们把所有的蒲公英看成一个长度为 nn 的序列 a1,a2,,ana_1,a_2,…,a_n,其中aia_i 为一个正整数,表示第 ii 棵蒲公英的种类编号。

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

输入格式

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

接下来一行 nn 个空格隔开的整数 aia_i, 表示蒲公英的种类。

再接下来 mm 行每行两个整数 l0,r0l_0,r_0,我们令上次询问的结果为 xx(如果这是第一次询问,则 x=0x=0)。

l=(l0+x1)modn+1,r=(r0+x1)modn+1l=(l_0+x-1) \mod n+1,r=(r_0+x-1) \mod n+1,如果 l>r l>r, 则交换 lrl,r

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

输出格式

输出 mm 行。

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

数据范围

1n400001 \le n \le 40000, 1m500001 \le m \le 50000, 1ai1091 \le a_i \le 10^9

输入样例:

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

输出样例:

1 
2 
1

来源

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