75分(WA)求助
查看原帖
75分(WA)求助
416242
New_hope楼主2022/10/15 12:01
#include<bits/stdc++.h>
using namespace std;

struct Node{
	int s,e;
};
Node a[500005];

long long cal(int f,int t){
	return (t+f)*(t-f+1)/2;
}

int main(){
	
	int n,top=0;
	scanf("%d",&n);
	for(int i=1;i<=n;i++){
		int op,l,r,k;
		long long ans=0;
		cin >> op;
		if(op == 1){
			scanf("%d%d",&l,&r);
			a[++top] = {l,r};
		}
		else{
			scanf("%d",&k);
			while(k>=(a[top].e-a[top].s+1)){
				ans += cal(a[top].s,a[top].e);
				k -= (a[top].e-a[top].s+1);
				a[top] = {0,0};
				top --;
			}
			ans += cal(a[top].e-k+1,a[top].e);
			a[top].e -= k;
			printf("%lld\n",ans);
		}
	}
	
	return 0;
}
2022/10/15 12:01
加载中...