P1198 WA 0pts求助
  • 板块题目总版
  • 楼主lcy0506
  • 当前回复0
  • 已保存回复0
  • 发布时间2025/6/14 22:04
  • 上次更新2025/6/15 17:37:41
查看原帖
P1198 WA 0pts求助
1044302
lcy0506楼主2025/6/14 22:04
#include <bits/stdc++.h>
using namespace std;
#define int long long
char p;
int n,mod;
int a[1000001],sum[4000001],add[4000001],x,summ=0,last_ans=0;
void change(int k,int l,int r){
	if(summ==l&&summ==r){
		sum[k]=(x+last_ans)%mod;
		return;
	}
	int mid=(l+r)>>1;
	if(summ<=mid) change(k*2,l,mid);
	else change(k*2+1,mid+1,r);
	sum[k]=max(max(sum[k*2],sum[k*2+1]),sum[k]);
}
int query(int k,int l,int r,int ll,int rr){
	if(r<ll) return -1e18;
	if(l>=ll&&r<=rr) return sum[k];
	int mid=(l+r)>>1,res=-1e18;
	res+=query(k*2,l,mid,ll,rr);
	res=max(res,query(k*2+1,mid+1,r,ll,rr));
	return res;
}
signed main(){
	cin>>n>>mod;
	for(int i=1;i<=n;i++){
		cin>>p>>x;
		if(p=='A'){
			summ++;
			change(1,1,summ);
		}
		else{
//			int l=(2+1)>>1;
//			cout<<l<<' '; 
			last_ans=query(1,1,summ,summ-x+1,summ);
			cout<<last_ans<<'\n';
		}
	}
}

只过了hack

2025/6/14 22:04
加载中...