记录编号 590261 评测结果 AAAAAAAAAA
题目名称 天才魔法少女琪露诺爱计数 最终得分 100
用户昵称 Gravatarflyfree 是否通过 通过
代码语言 C++ 运行时间 0.107 s
提交时间 2024-07-09 17:51:01 内存使用 6.57 MiB
显示代码纯文本
#include<bits/stdc++.h>
using namespace std;
#define MAXN 200010
#define ll long long
#define mod 998244353
ll s[MAXN],h[MAXN],a1[MAXN],a2[MAXN],h1[MAXN],h2[MAXN],dp[MAXN];
ll n,l,r,t;
ll lowbit(ll idx){
    return idx&(-idx);
}
void ad_(ll idx,ll p){
    while(idx<=n){
        s[idx]=(s[idx]+p+mod)%mod;
        idx+=lowbit(idx);
    }
}
ll re_(ll idx){
    ll ans=0;
    while(idx>0){
        ans=(ans+s[idx]+mod)%mod;
        idx-=lowbit(idx);
    }
    return ans;
}
int main(){
    freopen("cirnoisclever.in","r",stdin);
    freopen("cirnoisclever.out","w",stdout);
    cin>>n>>l>>r>>t;
    dp[1]=1;
    for(int i=1;i<=n;i++){
        cin>>h[i];
        ad_(max(h1[i]-t,(ll)1),a1[i]),ad_(min(h1[i]+t+1,n+1),0-a1[i]);
        ad_(max(h2[i]-t,(ll)1),0-a2[i]),ad_(min(h2[i]+t+1,n+1),a2[i]);
        dp[i]=re_(h[i])%mod;
        if(i==1)dp[1]=1;
        a1[i+l]=dp[i],h1[i+l]=h[i];
        a2[i+r+1]=dp[i],h2[i+r+1]=h[i];
    }
    cout<<dp[n]%mod<<endl;
    return 0;
}