RE求调
查看原帖
RE求调
139509
liufukang楼主2021/10/5 17:26

在学校用这题模测A了回来重做一边RE

CODE

#include<bits/stdc++.h>
using namespace std;
long long n,op,l,r,k,ans;
stack<long long>s;
long long read(){
	long long s=0,f=1;
	char ch=getchar();
	while (!isdigit(ch)){
		if (ch=='-') f=-1;
		ch=getchar();
	}
	while (isdigit(ch)){
		s=(s<<3)+(s<<1)+(ch^48);
		ch=getchar();
	}
	return s*f;
}
int main(){
	n=read();
	for (int i=1;i<=n;i++){
		op=read();
		if (op&1){
			l=read(),r=read();
			s.push(l);
			s.push(r);
		}
		else{
			ans=0;
			k=read();
			r=s.top();s.pop();
			l=s.top();s.pop();
			while (k>r-l+1){
				ans+=(l+r)*(r-l+1)/2;
				k-=r-l+1;
				r=s.top();s.pop();
				l=s.top();s.pop();
			}
			if (k<r-l+1){
				ans+=(r-k+1+r)*k/2;
				s.push(r-k);
			}
			if (k==r-l+1) ans+=(l+r)*k/2;
			cout<<ans<<endl;
		}
	}
	return 0;
}

样例前两个能过(60、44),第三个(124)RE了

2021/10/5 17:26
加载中...