记录编号 601026 评测结果 AAAAAAAAAA
题目名称 2264.魔法传输 最终得分 100
用户昵称 Gravatar二乾五 是否通过 通过
代码语言 C++ 运行时间 0.965 s
提交时间 2025-05-24 15:42:39 内存使用 5.32 MiB
显示代码纯文本
#include<bits/stdc++.h>
using namespace std;

#define ll long long
#define mod 1000000007

ll n,m,a[100050],st[400050],lztg[400050];

void pd(ll l,ll r,ll mid,ll k){
    st[k<<1]+=(mid-l+1)*lztg[k];
    st[k<<1|1]+=(r-mid)*lztg[k];
    lztg[k<<1]+=lztg[k];
    lztg[k<<1|1]+=lztg[k];
    lztg[k]=0;
}

void stadd(ll l,ll r,ll k,ll s,ll e,ll x){
    if(s<=l&&r<=e){
        st[k]+=(r-l+1)*x;
        lztg[k]+=x;
        return;
    }
    if(s>r||e<l){
        return;
    }
    ll mid=(l+r)>>1;
    if(lztg[k]){
        pd(l,r,mid,k);
    }
    stadd(l,mid,k<<1,s,e,x);
    stadd(mid+1,r,k<<1|1,s,e,x);
    st[k]=(st[k<<1]+st[k<<1|1])%mod;
}

ll stsum(ll l,ll r,ll k,ll s,ll e){
    if(s<=l&&r<=e){
        return st[k];
    }
    if(s>r||e<l){
        return 0;
    }
    ll mid=(l+r)>>1;
    if(lztg[k]){
        pd(l,r,mid,k);
    }
    return stsum(l,mid,k<<1,s,e)%mod+stsum(mid+1,r,k<<1|1,s,e)%mod;
}

int main(){
    cin>>n>>m;
    for(ll i=1;i<=m;i++){
        ll x,y,z;
        char op; 
        cin>>op>>x;
        if(op=='C'){
            cin>>y;
            stadd(1,n,1,x,y,1);
            stadd(1,n,1,y+1,y+1,-(y-x+1));
        }else{
            cout<<stsum(1,n,1,1,x)%mod<<endl;
        }
    }
    return 0;
}