75pts求助
查看原帖
75pts求助
754467
f_hxr_楼主2023/4/29 09:56

rt,听说五一节人多

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
struct node{
	ll l,r;
	ll len(){return 1ll*r-l+1;}
	ll sum(){return 1ll*(l+r)*(r-l+1)/2;}
}Stack[100000007];
int top=0;
ll sum(ll l,ll r){return 1ll*(l+r)*(r-l+1)/2;}
int main(){	
	int n,t,L,R,k,Sum=0;
	cin>>n;
	for(int i=1;i<=n;i++){
		cin>>t;
		if(t==1){
			cin>>L>>R;
			top++;
			Stack[top].l=L;
			Stack[top].r=R;
		}
		else{
			Sum=0;
			cin>>k;
			while(k&&top){
			    if(k>=Stack[top].len()){
				    Sum+=Stack[top].sum();
				    k-=Stack[top].len();
				    top--;
			    }
			    else{
			        Sum+=sum(Stack[top].r-k+1,Stack[top].r);
			        Stack[top].r-=k;
			        break;
			    }
			}
			cout<<Sum<<endl;
		}
	}
	return 0;	
} 
2023/4/29 09:56
加载中...