15pts wa + re 求助
查看原帖
15pts wa + re 求助
655086
nightmare_killer楼主2022/10/23 13:08
#include <bits/stdc++.h>
# define N 998244353
using namespace std;
long long n, k, p, ans;
long long a[100005];
long long add(long long n, long long k)
{
	long long n1 = n + k;
	long long ans1 = n * (n + 1) % N * (2 * n + 1) % N / 6;
	long long ans2 = n1 * (n1 + 1) % N * (2 * n1 + 1) % N / 6;
	return ans2 - ans1;
}
int main()
{
	cin >> n >> k;
	for(long long i = 1; i <= n; i++)
		scanf("%lld", &a[i]);
	for(long long i = 1; i <= n; i++)
		if(a[i] + k >= abs(a[i] + 1)) 
		{
			p = i;
			break;
		}
	for(long long i = 1; i < p; i++)
	{
		ans += (a[i] + 1) * (a[i] + 1) % N * k % N;
		ans %= N;
	}
	int cnt = 2;
	for(long long i = p; i <= n; i++)
	{
		if(cnt < k) cnt++;
		ans += add(a[i] , k);
		ans %= N;
	}
	cout << ans << endl;
	return 0;
}
2022/10/23 13:08
加载中...