85pts暴毙开了longlong取了模没有TLE求助
查看原帖
85pts暴毙开了longlong取了模没有TLE求助
748854
FunKingDoor楼主2022/10/23 12:13
#include <iostream>
using namespace std;

#define int long long

const int mod = 998244353;
const int MX = 1e6 + 9;
int n, k, mid = -1;
int a[MX], possum = 0, posnum = 0, sqsum = 0;
int ans;

signed main() {
	a[0] = -1;
	cin >> n >> k;
	for(int i = 1; i <= n; i++){
		cin >> a[i];
		if(a[i - 1] < 0 && a[i] >= 0) mid = i - 1;
		if(a[i] >= 0) possum += a[i] * 2 + 1, possum %= mod, posnum++, sqsum += a[i] * a[i], sqsum %= mod;
		else sqsum += (a[i] + 1) * (a[i] + 1), sqsum %= mod;
	}
	for(int m = 1; m <= k; m++){
		sqsum += possum;
		possum += 2 * posnum;
		while(mid && -a[mid] - 1 < a[mid] + m) {
			sqsum += (a[mid] + m) * (a[mid] + m) - (-a[mid] - 1) * (-a[mid] - 1);
			possum += (a[mid] + m) << 1 | 1;
			sqsum %= mod;
			possum %= mod;
			posnum++;
			mid--;
		}
		ans += sqsum;
		ans %= mod;
		sqsum %= mod;
		possum %= mod;
	}
	cout << ans;
	return 0;
}

非常疑惑地 WA 了三个,好像没有人跟我一样?

2022/10/23 12:13
加载中...