全WA求助
查看原帖
全WA求助
572482
Dream_weavers楼主2022/3/28 20:24

rt,和题解对看了1h也没找出什么错误,我快炸了QAQ.

我现在的思维很乱,对着模板看也不知道哪错了,样例都没过

cnmd线段树

#include<bits/stdc++.h>
#define int long long
using namespace std;

const int N=2e5+5;
int n,m,mod;
int a[N],sum[N*4];

inline int lc(int x){
	return x<<1;
}
inline int rc(int x){
	return x<<1|1;
}

void add(int x,int p,int l,int r,int d){
	if(l==r){
		sum[x]=max(sum[x],d);
		return ;
	}
	int mid=(l+r)/2;
	if(p<=mid)add(lc(x),p,l,mid,d);
	else add(rc(x),p,mid+1,r,d);
	sum[x]=max(sum[lc(x)],sum[rc(x)]);
}

int query(int x,int l,int r,int l1,int r1){
	if(l1<=l&&r<=r1){
		return sum[x];
	}
	int mid=(l+r)/2;
	int res=0;
	if(l1<=mid)max(res,query(lc(x),l,mid,l1,r1));
	if(mid<r1)max(res,query(rc(x),mid+1,r,l1,r1));
	return res;
}

signed main(){
	int k,t=0;
	char op;
	scanf("%lld%lld",&m,&mod);
	for(int i=1;i<=m;i++){
		cin>>op;
		scanf("%lld",&k);
		if(op=='A'){
			n++;
			add(1,n,1,m,(k+t)%mod);
		}else if(op=='Q'){
			if(k==0){
				printf("0\n");
			}else{
				t=query(1,1,m,n-k+1,n);
				printf("%lld\n",t);
			}
		}
	} 
    return 0;
}

2022/3/28 20:24
加载中...