35pts 求助
查看原帖
35pts 求助
777068
roy_wei楼主2022/10/24 17:23

求助,可能是因为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() {
//    freopen("name.in","r",stdin);
//    freopen("name.out","w",stdout);
    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;
}
2022/10/24 17:23
加载中...