记录编号 |
590261 |
评测结果 |
AAAAAAAAAA |
题目名称 |
天才魔法少女琪露诺爱计数 |
最终得分 |
100 |
用户昵称 |
flyfree |
是否通过 |
通过 |
代码语言 |
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;
}