在学校用这题模测A了回来重做一边RE
#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了