#P16032. [Oni2025]Experimente

[Oni2025]Experimente

题目描述

Dexter 新开了一间实验室,想对小鼠进行一系列实验。在实验室中有 NN 只小鼠,它们围成一个圆圈,并按顺序编号为 00N1N-1

Dexter 依次进行 MM 次实验。对于每一次实验,参与第 ii 次实验的小鼠总是圆上的一个连续区间,用一对数 (Si,Fi)(S_i,F_i) 表示:

  • 如果 SiFiS_i\le F_i,则编号为
Si,Si+1,,FiS_i,S_i+1,\ldots,F_i

的小鼠参与第 ii 次实验;

  • 如果 Si>FiS_i>F_i,则编号为
Si,Si+1,,N2,N1,0,,FiS_i,S_i+1,\ldots,N-2,N-1,0,\ldots,F_i

的小鼠参与第 ii 次实验。

任务

在每一步,Dexter 都想知道有多少只小鼠参加了到目前为止的所有实验。

换句话说,在完成第 ii 次实验后,需要求出同时参加了实验 1,2,,i1,2,\ldots,i 的小鼠数量。

输入格式

第一行包含两个整数 N,MN,M

接下来 MM 行,每行包含两个整数 Ai,BiA_i,B_i。它们按如下方式确定真正的区间端点 Si,FiS_i,F_i

  • 如果 i=1i=1,则
Si=Ai,Fi=Bi.S_i=A_i,\qquad F_i=B_i.
  • 如果 i>1i>1,记 Ri1R_{i-1} 为第 i1i-1 次实验后的答案,则
Si=(Ri1+Ai)modN,S_i=(R_{i-1}+A_i)\bmod N, Fi=(Ri1+Bi)modN.F_i=(R_{i-1}+B_i)\bmod N.

输出格式

应包含 MM 行。

ii 行输出一个整数,表示参加了实验 1,2,,i1,2,\ldots,i 的小鼠数量。

数据范围与限制

  • 1N10000000001\le N\le 1\,000\,000\,000
  • 1M1000001\le M\le 100\,000
  • 0Ai,Bi<N0\le A_i,B_i<N

子任务

子任务 分值 限制
1 18 对所有 1iM1\le i\le M,都有 AiBiA_i\le B_i
2 20 1N,M10001\le N,M\le 1000
3 22 1N100000, 1M10001\le N\le 100000,\ 1\le M\le 1000
4 20 1N,M1000001\le N,M\le 100000
5 无额外限制

样例

样例 1

输入

5 3
1 4
3 0
2 0

输出

4
3
2

解释

对于第一次实验,S1=1,F1=4S_1=1,F_1=4,参与的小鼠为 1,2,3,41,2,3,4,所以 R1=4R_1=4

对于第二次实验,

S2=(3+4)mod5=2,S_2=(3+4)\bmod 5=2, F2=(0+4)mod5=4.F_2=(0+4)\bmod 5=4.

同时参加前两次实验的小鼠为 2,3,42,3,4,所以 R2=3R_2=3

对于第三次实验,

S3=(2+3)mod5=0,S_3=(2+3)\bmod 5=0, F3=(0+3)mod5=3.F_3=(0+3)\bmod 5=3.

同时参加前三次实验的小鼠为 2,32,3,所以 R3=2R_3=2

样例 2

输入

6 2
4 1
2 5

输出

4
2

解释

对于第一次实验,S1=4,F1=1S_1=4,F_1=1,参与的小鼠为 0,1,4,50,1,4,5,所以 R1=4R_1=4

对于第二次实验,

S2=(2+4)mod6=0,S_2=(2+4)\bmod 6=0, F2=(5+4)mod6=3.F_2=(5+4)\bmod 6=3.

同时参加前两次实验的小鼠为 0,10,1,所以 R2=2R_2=2