35pts 只有AC和WA求调!
查看原帖
35pts 只有AC和WA求调!
743396
luohuohuo楼主2023/8/30 20:01

栈模拟+求和定理

#include <bits/stdc++.h>
using namespace std;

int n,T,l,r;
long long k,sum;

struct q
{
    int l,r;
};
stack<q> s;


int main()
{
    cin >> n;
    while(n--)
    {
        cin >> T;
        if(T == 1)
        {
            cin >> l >> r;
            s.push({l,r});
        }
        else
        {
            cin >> k;
            while(k)
            {   
                q a = s.top();
                long long len = a.r-a.l+1;
                if(len <= k)
                {
                    sum += 1ll*len*(a.r+a.l)/2;
                    k -= len;
                    s.pop();
                }
                else
                {
                    sum += 1ll*k*(a.r-k+1 + a.r)/2;
                    k=0;
                    s.pop();
                    s.push({a.l,a.r-k});
                }
            }
            cout << sum << endl;
            sum=0;
        }
    }
    return 0;
}
2023/8/30 20:01
加载中...