WA 0pts 线段树 码风正常 求调 玄关
查看原帖
WA 0pts 线段树 码风正常 求调 玄关
716602
AKorz楼主2024/9/18 08:56
#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define ls(x) (2*(x)+0)
#define rs(x) (2*(x)+1)
#define N 200009
struct node{ll mx;}seg[N<<2];
ll n,m,mx,sum,opt;
char s[9];
ll read()
{
	ll res=0,flag=1;char ch=getchar();
	while(ch<'0'||ch>'9') flag*=((ch=='-')?(-1):(1)),ch=getchar();
	while(ch>='0'&&ch<='9') res=res*10+ch-'0',ch=getchar();
	return res*flag;
}
void write(ll res)
{
	if(res<0) putchar('-'),res=-res;
	if(res>9) write(res/10);
	putchar(res%10+'0');
}
ll query(ll id,ll l,ll r,ll k)
{
	ll mid=(l+r)>>1;
	if(l==r) return seg[id].mx;
	if(mid>=k) return query(ls(id),l,mid,k);
	if(mid <k) return query(rs(id),mid+1,r,k);
}
void update(ll id,ll l,ll r,ll k,ll v)
{
	ll mid=(l+r)>>1;
	if(l==r){seg[id].mx=v;return;};
	if(mid>=k) update(ls(id),l,mid,k,v);
	if(mid <k) update(rs(id),mid+1,r,k,v);
	seg[id].mx=max(seg[ls(id)].mx,seg[rs(id)].mx);
}
int main()
{
	n=read(),m=read(),mx=0;
	for(int i=1;i<=N-9;i++) seg[i].mx=-0x3f3f3f3f;
	while(n--)
	{
		scanf("%s",s),opt=read();
		if(s[0]=='Q') mx=((sum==0)?(0):(query(1,1,N-9,sum-opt+1))),printf("%lld\n",mx);
		else sum++,opt=(opt+mx)%m,update(1,1,N-9,sum,opt);
	}
	return 0;
}
2024/9/18 08:56
加载中...