能有大犇帮忙改改吗
查看原帖
能有大犇帮忙改改吗
546558
Land_ER楼主2021/9/29 22:08
#include<iostream>
using namespace std;
struct T{
	int l,r;
};
T list[500005];
int list_len = 0;
inline long long int sum(int l,int r){
	long long int ret = (l+r) * (r-l+1) / 2;
	return ret;
}
void push(int l,int r){
	list[list_len].l = l;
	list[list_len].r = r;
	++ list_len;
	return;
}
long long int pop(int k){
	long long int ret;
	int i = list_len - 1;
	int len = list[i].r - list[i].l + 1;
	if(k < len){
		ret = sum(list[i].r-k+1,list[i].r);
		list[i].r -= k;
		return ret;
	}
	else{
		ret = sum(list[i].l,list[i].r);
		k -= len;
		-- list_len;
		ret += pop(k);
		return ret;
	}
}
void make(void){
	int n,op,l,r,k;
	long long int ret;
	cin >> n;
	for(int i = 0;i < n;++ i)
	{
		cin >> op;
		if(op == 1){
			cin >> l >> r;
			push(l,r);
		}
		else{
			cin >> k;
			ret = pop(k);
			cout << ret << '\n';
		}
	}
	return;
}
int main(void){
	make();
	return 0;
}
2021/9/29 22:08
加载中...