案发地点:P7870 「Wdoi-4」兔已着陆
案件问题:样例没过,输出负数。
问题代码:
#include <bits/stdc++.h>
#define sum(l, r) ((l + r) * (r - l + 1) / 2)
#define cnt(l, r) (r - l + 1)
using namespace std;
class Node
{
public:
long long l, r;
};
stack<Node> s;
long long n;
int main()
{
// freopen(".in", "r", stdin);
// freopen(".out", "w", stdout);
cin >> n;
for (long long i = 1; i <= n; i++)
{
long long op;
cin >> op;
if (op == 1)
{
long long l, r;
cin >> l >> r;
s.push({l, r});
}
else
{
long long k;
cin >> k;
long long ans = 0;
while (cnt(s.top().l, s.top().r) < k)
k -= cnt(s.top().l, s.top().r), ans += sum(s.top().l, s.top().r), s.pop();
long long l = s.top().l;
long long r = s.top().r;
ans += sum(r - k + 1, r);
s.pop();
s.push({l, r - k});
cout << ans << endl;
}
}
system("pause");
return 0;
}