代码:
浅显易懂。。。
#include <bits/stdc++.h>
using namespace std;
struct xll{
long long begin,end;
};
stack<xll> s;
long long money(long long k){
long long sum=0;
xll c=s.top();
long long a=c.begin,b=c.end;
long long num=b-a+1;
if(k<num){
c.end-=k;
s.pop();
s.push(c);
long long n=c.end+1;
sum=((n+b)*k/2);
}else{
sum+=((a+b)*num/2);
k-=num;
s.pop();
sum+=money(k);
}
return sum;
}
int main(){
long long n;
cin>>n;
for (int i=1;i<=n;i++){
long long m;
cin>>m;
if(m==1){
xll a;
cin>>a.begin>>a.end;
s.push(a);
}else{
long long k;
cin>>k;
cout<<money(k)<<"\n";
}
}
return 0;
}
65分,剩下的RE,求助。。。