75pts求助
查看原帖
75pts求助
781566
liuyuanpei楼主2023/4/5 11:28
# include <iostream>
# include <cmath>
# include <cstring>
# include <string>
# include <algorithm>
# include <stack>
# include <queue>
# include <set>
# include <map>
using namespace std;
int t,x,l,r,sum,top=0;
long long k;
struct node {
	int l,r;
}st[1000005];
int main(){
	cin >>t;
	while(t--){
		cin >>x;
		if(x==1) cin >>st[++top].l>>st[top].r;
		if(x==2) {
			cin >>k;
			sum=0;
			while(k>(st[top].r-st[top].l+1)){
				k-=st[top].r-st[top].l+1;
				sum+=(st[top].l+st[top].r)*(st[top].r-st[top].l+1)/2;
				top--;
			}
			l=st[top].r-k+1;
			sum+=(st[top].r+l)*(st[top].r-l+1)/2;
			st[top].r=l-1;
			cout <<sum<<endl;
		}
	}
	return 0;
}

测试记录

2023/4/5 11:28
加载中...