TLE求助
查看原帖
TLE求助
332123
LHLeisus楼主2021/10/3 15:46
#include<bits/stdc++.h>
using namespace std;
long long n,x,l,r,k,sum=0;
struct node{
	int l,r;
};
stack<node>s;
inline long long read(){
   register int s=0,w=1;
   char ch=getchar();
   while(ch<'0'||ch>'9'){if(ch=='-')w=-1;ch=getchar();}
   while(ch>='0'&&ch<='9')s=s*10+ch-'0',ch=getchar();
   return s*w;
}
int main()
{
	n=read();
	for(long long i=1;i<=n;i++)
	{
		x=read();
		if(x==1)
		{
			l=read();
			r=read();
			s.push((node){
				l,r
			});
		}
		else if(x==2)
		{
			k=read();
			sum=0;
			node t=s.top();
			s.pop();
			while(t.l<=t.r&&k--)
			{
				sum+=t.r;
				t.r--;
				if(t.l>t.r&&k!=0)
				{
					t=s.top();
					s.pop();
				}
			}
			if(t.l<=t.r) s.push(t);
			cout<<sum<<endl;
		}
	}
	return 0;
}

2021/10/3 15:46
加载中...