快长开小就 WA,开大就 T
#include <iostream>
#include <vector>
#define endl '\n'
#define int long long
using namespace std;
const int B = 4e2 + 5;
int n, x, Mod, Maxb[B], sizb, sumb, t;
char op;
vector<int>b[B];
signed main(){
// freopen("1.in", "r", stdin);
// freopen("cpp.out", "w", stdout);
cin >> n >> Mod;
while(n--){
cin >> op >> x;
if(op == 'Q'){
int ret = 0;
for(int i = sumb; i >= sumb - x / B + 1; --i){
ret = max(ret, Maxb[i]);
}
int si = b[sumb - x / B].size() - x % B;
for(int i = b[sumb - x / B].size() - 1; i >= si; --i) ret = max(ret, b[sumb - x / B][i]);
cout << ret % Mod << endl;
t = ret;
}else{
if((sizb - 1) / B < sizb / B){
sumb++;
}
sizb++;
b[sumb].push_back((x + t) % Mod);
// cout << sumb << endl;
Maxb[sumb] = max(Maxb[sumb], (x + t) % Mod);
// cout << (x + t) % Mod << endl;
}
}
return 0;
}