求助,可能是因为mod?
#include <bits/stdc++.h>
using namespace std;
long long a[1000001];
long long pl[1000001];
long long sum1[1000001];
long long sum2[1000001];
long long ans=0;
const int mod=998244353;
long long p=0;
int main() {
ios::sync_with_stdio(false);
cin.tie(0), cout.tie(0);
int n,k;
cin>>n>>k;
int idx1=0,idx2=0;
for (int i=1;i<=n;i++)
{
cin>>a[i];
sum1[i]=(sum1[i-1]+a[i]*a[i]+mod)%mod;
pl[i]=pl[i-1]+a[i];
ans+=(a[i]+1)*(a[i]+1);
if (a[i]<0)
{
p=i;
idx2++;
sum2[idx2]=(sum2[idx2-1]+(a[i]+1)*(a[i]+1)+mod)%mod;
}
}
ans%=mod;
long long sum=ans;
for (long long i=2;i<=k;i++)
{
while (p>=1&&a[p]+i>abs(a[p]+1))
{
p--;
}
ans=1LL*sum2[p]+1LL*sum1[n]-1LL*sum1[p]+1LL*2*i*(pl[n]-pl[p])%mod+1LL*i*i*(n-p)%mod;
ans%=mod;sum+=ans;sum%=mod;
}
cout<<sum%mod;
}