WA了10个点,谢谢daolao!!!
查看原帖
WA了10个点,谢谢daolao!!!
418419
ko_no_lzx_da楼主2021/12/14 12:02
#include<iostream>
#include<cstring>
#include<string>
#include<cstdio>
#include<queue>
#include<cmath>
#include<algorithm>
using namespace std;
long long n,m,d,t=0,aa=0; 
long long ll,rr,kk,a[100000];
long long mmax=-1;
struct node{
	long long maxx=0;
	long long l,r;
}tree[1000000];
long long ans=0;
void build(long long l,long long r,long long n){
	tree[n].l=l;
	tree[n].r=r;
	if(l==r){
		tree[n].maxx=a[l]%d;
		return;
	}
	build(l,(l+r)/2,n*2);
	build((l+r)/2+1,r,n*2+1);
	tree[n].maxx=max(tree[n].maxx,max(tree[n*2].maxx,tree[n*2+1].maxx));
}
void qjcx(long long l, long long r,long long n){
	if(ll<=tree[n].l&&tree[n].r<=rr){
		if(mmax<tree[n].maxx)mmax=tree[n].maxx;
		return;
	}
	if(ll<=(l+r)/2)qjcx(l,(l+r)/2,n*2);
	if(rr>(l+r)/2)qjcx((l+r)/2+1,r,n*2+1);
}

int main(){
	cin >>m>>d;
//	build(1,n,1);	`
	for(long long i=1;i<=m;i++){
		char pp;
		long long qq;
		ans=0;
		cin >>pp;
		if(pp=='A'){
			cin >>qq;
			aa++;
			a[aa]=(qq+t)%d;
			build(1,aa,1);
		}
		if(pp=='Q'){
			cin >>qq;
			ll=aa-qq+1;
			rr=aa;
			qjcx(1,aa,1);
			cout <<mmax%d<<endl;
			t=mmax;
			mmax=-1;
		}
	}
	return 0;
}


2021/12/14 12:02
加载中...