P0594

[JSOI2008]最大数maxnumber

[JSOI2008]最大数maxnumber

现在请你维护一个数列,要求提供以下两种操作。

1. 查询操作

  • 语法:Q L
  • 功能:查询当前数列中末尾 LL 个数中最大的数,并输出这个数的值;
  • 限制:LL 不超过当前数列的长度。

2. 插入操作

  • 语法:A n
  • 功能:将 nn 加上 tt,其中 tt 是最近一次查询操作的答案(如果还未执行过查询操作,则 t=0t = 0),并将所得结果对一个固定的常数 DD 取模,将所得答案插入到数列的末尾;
  • 限制:nn 是非负整数并且在长整型范围内。

注意:初始时数列是空的,没有一个数。

输入格式

第一行两个整数 MM 和 DD,其中 MM 表示操作的个数,DD 如上文中所述。

接下来 MM 行,每行为一个查询操作或者插入操作。

输出格式

对于每一个查询操作,输出一行,该行只有一个数,即序列中最后 LL 个数的最大数。

样例输入

5 100
A 96
Q 1
A 97
Q 1
Q 2

样例输出

96
93
96

样例解释

  • A 96:此时 t=0t = 0,插入 (96+0) mod 100=96(96+0)\bmod 100 = 96,数列为 [96][96];
  • Q 1:末尾 11 个数的最大值为 9696,输出 9696,此后 t=96t = 96;
  • A 97:插入 (97+96) mod 100=93(97+96)\bmod 100 = 93,数列为 [96,93][96, 93];
  • Q 1:末尾 11 个数的最大值为 9393,输出 9393,此后 t=93t = 93;
  • Q 2:末尾 22 个数的最大值为 max⁡(96,93)=96\max(96, 93) = 96,输出 9696。

数据范围

  • M≤2×105M\le 2\times 10^5;
  • DD 在长整型范围内。

来源与许可

本题为 JSOI 2008 试题「最大数 maxnumber」,题面与测试数据整理自 BZOJ 1012。

样例 1

输入

5 100
A 96
Q 1
A 97
Q 1
Q 2

输出

96
93
96