75pts求助
查看原帖
75pts求助
448512
La_574楼主2023/1/31 09:40
#include<bits/stdc++.h>
using namespace std;
#define int long long
int n,op,l,r,k,p;
struct node{
	int l,r,t;
};
stack<node> s;
signed main()
{
	scanf("%lld",&n);
	while(n--)
	{
		scanf("%lld",&op);
		if(op==1)
		{
			scanf("%lld%lld",&l,&r);
			s.push((node){l,r,r-l+1});
		}
		if(op==2)
		{
			scanf("%lld",&k);
			while(!s.empty())
			{
				if(!s.empty()&&s.top().t>k)
				{
					p+=s.top().r*k-(k*k-k)/2;
					s.top().r-=k;
					s.top().t-=k;
					printf("%lld\n",p);
					p=0;
					break;
				}
				else
				{
					if(!s.empty()){
						k-=s.top().t;
						p+=(s.top().l+s.top().r)*s.top().t/2;
						s.pop();
					}
				}
			}
		}
	}
	return 0;
} 
2023/1/31 09:40
加载中...