神秘RE(悬棺
查看原帖
神秘RE(悬棺
989997
DGL__DGL_AFO楼主2024/8/8 10:05

神秘RE:#6,#8,#13,#16,其他点都AC了

记录

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
int t,c;
ll x,k;
int op;
int idx=1,cnt;
ll s[214514],wow,res;
ll q[214514],ii=1,jj;
struct A
{
	ll l,r,res;
} a[214514];

inline ll ask(ll x)
{
	x+=wow;
	int l=1,r=cnt,mid;
	while(l<r)
	{
		mid=(l+r)>>1;
		if(s[mid]<x)
		  l=mid;
		else
		  r=mid-1;
		if(mid==(l+r)>>1)
		  break;	  
	}
	
	while(s[mid]<x&&mid<=cnt-1)
	  mid++;
	while(s[mid]>=x&&mid>=1)
	  mid--;  
	  
	return x-s[mid];
	
	
}

int main()
{
	//freopen("2.in.txt","r",stdin);
	//freopen("2.txt","w",stdout);
	ios::sync_with_stdio(0),cin.tie(0);
	q[0]=-1e18-7;
  cin>>c>>t;	
	while(t--)
	{
		cin>>op;
		
		if(op==1)
		{
			cin>>x;
			a[++cnt].l=1;
			a[cnt].r=x;
			a[cnt].res=x;
			while(x>q[jj]&&jj>=ii)
			  jj--;
			q[++jj]=x;  
			s[cnt]=s[cnt-1]+x;
			/*for(int i=idx;i<=cnt;i++)
			  cout<<a[i].l<<" "<<a[i].r<<" "<<a[i].res<<"      ";
			  
			cout<<endl;*/  
		}
		else if(op==2)
		{
			cin>>x;
			wow+=x;
			for(int i=idx;i<=cnt;i++)
			{
				if(x>=a[i].res)
				{
					idx++;
					x-=a[i].res;
					if(a[i].r==q[ii])
					  ii++;
				}	
				else
				{
					res=x+a[i].l;
					a[i].l=res;
					a[i].res=a[i].r-a[i].l+1;
					break;
				}
			}
			
		}
		else if(op==3)
		{
			cin>>x;
			cout<<ask(x)<<'\n';
		}
		else
			cout<<q[ii]<<'\n';
			
		
	}
	
	
	
	return 0;
} 
2024/8/8 10:05
加载中...