P1198 线段树求调 【悬 5 关】
  • 板块灌水区
  • 楼主a12a
  • 当前回复1
  • 已保存回复1
  • 发布时间2023/4/2 18:23
  • 上次更新2023/10/23 19:36:50
查看原帖
P1198 线段树求调 【悬 5 关】
719939
a12a楼主2023/4/2 18:23

rt

#include<bits/stdc++.h>
#define int long long
using namespace std;
int n,m,x,y,k,mod,sum,ans,a[2000010],t[4000010],vis[4000010];
char cmd;
void pshu(int k)
{
	t[k]=max(t[k*2],t[k*2+1]);
}
void upd(int l,int r,int x,int v,int k)
{
	int mid;
	if(l==r)
		t[k]=v;
	else
	{
		if(x<=(mid=l+(r-l)/2))
			upd(l,mid,x,v,k*2);
		else
			upd(mid+1,r,x,v,k*2+1);
		pshu(k);
	}
}
int qry(int L,int R,int l,int r,int k)
{
	int mid,ans=-0x3ffffffff;
	if(L<=l&&r<=R)
		return t[k];
	if(L<=(mid=l+(r-l)/2))
		ans=min(ans,qry(L,R,l,mid,k*2));
	if(R>mid)
		ans=min(ans,qry(L,R,mid+1,r,k*2+1));
	return ans;
}
signed main()
{
	cin>>m>>mod;
	while(m--)
	{
		cin>>cmd;
		if(cmd=='A')
			cin>>x,sum++,upd(1,m,sum,(ans+x)%mod,1);
		else
		{
			cin>>x;
			if(!x)
				ans=0;
			else
				ans=qry(sum-x+1,m,1,m,1);
			cout<<ans<<'\n';
		}
	}
}
2023/4/2 18:23
加载中...