2519: 数列的秘密

内存限制:64 MB 时间限制:60.000 S
评测方式:文本比较 命题人:
提交:10 解决:3

题目描述

向哥最近在研究数列,他需要知道在他所研究的数列中,最大的数是多少(Max),
最小的数是多少(Min),最大的数的最小的数次幂是多少(Max^Min),所有数的乘积是
多少。要知道,这样的问题是肯定难不倒向哥的。但是,最近向哥突发奇想,想要研究
下这个数列的更深层的性质,所以他决定不断的从这个数列中删去一些数,每次删除后
都研究下当前数列。由于数列项数很大,这给向哥带来了很大的麻烦,于是向哥请你帮
他写一个程序,来完成下列操作。
1. D x:表示从数列中删除 x,保证数列中一定会有 x。
2. B:输出当前数列中的最大数,保证数列不为空。
3. S:输出当前数列中的最小数,保证数列不为空。
4. M:输出 Max^Min 除以 317847191 的余数,其中 Max 为当前数列中的最大数,Min 为
当前数列中的最小数,保证数列不为空。
5. T:输出数列中所有数的乘积除以 317847191 的余数,保证数列不为空。

输入

共 M+2 行。
第 1 行:两个正整数 N,M,N 表示初始数列的长度,M 表示操作数。
第 2 行:N 个正整数,第 i 个数表示初始数列中的第 i 项 Ai,数列中有可能会有相
同的数。
第 3~M+2 行:每行表示一个操作,具体格式参见题目描述。

输出

每行一个数,分别表示每个操作的结果(D x 操作不需要有输出)。

样例输入 复制

3 6
2 6 9
M
D 9
B
S
M
T

样例输出 复制

81
6
2
36
12

提示

共 10 个测试点:
Case 1~3 N<=1000, M<=100, Ai<=4000
Case 4 只包含 D、B、S 操作
Case 5 只包含 D、B、S、M 操作
Case 6~7 只包含 D、T 操作
Case 8~10 无特殊说明
对于所有数据 N<=1,000,000, M<=1,000,000, Ai<=100,000,000