社区讨论
全wa 求助
P1198[JSOI2008] 最大数参与者 1已保存回复 0
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 0 条
- 当前快照
- 1 份
- 快照标识符
- @mhj3ourr
- 此快照首次捕获于
- 2025/11/03 20:12 4 个月前
- 此快照最后确认于
- 2025/11/03 20:12 4 个月前
CPP
#include<bits/stdc++.h>
using namespace std;
const int N = 200005;
int cnt = 0, m;
char op;
long long n, lg[N], a[N], st[N][21], t=0, d;
void change(int x){
st[x][0] = a[x];
for(int j = 1;(1 << j) <= cnt; j++){
int i = cnt-(1<<j)+1;
if(i < 1) break;
st[i][j] = max(st[i][j-1], st[i+(1<<(j-1))][j-1]);
}
}
inline long long query(int l,int r){
int len = r-l+1;
int k = lg[len];
return max(st[l][k], st[r+(1<<k)-1][k]);
}
signed main(){
scanf("%d%lld", &m, &d);
lg[0] = -1;
for(int i = 1;i <= m; i++) lg[i] = lg[i >> 1]+1;
for(int i = 1;i <= m; i++){
cin >> op;
if(op == 'A'){
scanf("%lld", &n);
a[++cnt] = (n+t)%d;
change(cnt);
}
else if(op == 'Q'){
int L;
scanf("%d", &L);
long long ans = query(cnt-L+1, cnt);
printf("%lld\n", ans);
t = ans;
}
}
return 0;
}
回复
共 0 条回复,欢迎继续交流。
正在加载回复...