15Pts求助,WA了
查看原帖
15Pts求助,WA了
568775
Joseph_H楼主2022/10/25 18:10
#include<bits/stdc++.h>
using namespace std;
int n,k;
const int N = 1e6 + 10;
int f[N];
const int mod = 998244353;
int ans;
int squ;
int pre[N],pre2[N];
int main(){
	scanf("%d%d",&n,&k);
	for(int i = 1;i <= n;i++){
		scanf("%d",&f[i]);
		pre[i] = (pre[i - 1] + f[i]) % mod;
		squ = (squ + f[i] * f[i]) % mod;
	}
	int tag = 1;
	for(int _ = 1;_ <= k;_++){
		while(abs(f[tag] + 1) > abs(f[tag] + _)) tag++;//i < tag放于+1,i > tag放于+_
		ans = (ans + squ + tag - 1 + 2 * pre[tag - 1] % mod + _ * _ * (n - tag + 1) % mod + 2 * _ * (pre[n] - pre[tag - 1]) % mod) % mod;
	}
	printf("%d",ans);
}
2022/10/25 18:10
加载中...