90分求助
查看原帖
90分求助
807950
xyvsvg楼主2022/10/25 07:51

代码:错了#9,#13两个点

#include<iostream>
#include<stack>
#include<string>
#include<cmath>
#include<iomanip>
#include<algorithm>
#include<climits>
#include<cstdio>
using namespace std;
const int M = 998244353, N = 1e6 + 10;
long long n, k, a[N][2], b[N][2], q, mid, ans;
int main()
{
 scanf("%lld%lld", &n, &k);
 mid = n;
 for (int i = 1; i <= n; ++i)
 {
  scanf("%lld", &a[i][0]);
  a[i][1] = (a[i - 1][1] + a[i][0]) % M;
  b[i][0] = (a[i][0] * a[i][0]) % M;
  b[i][1] = (b[i - 1][1] + b[i][0]) % M;
 }
 for (long long i = 1; i <= k; ++i)
 {
  while (0 < mid && abs(a[mid][0] + 1) < abs(a[mid][0] + i))--mid;
  q = (2 * a[mid][1] + mid + b[n][1]) % M;
  q = (q + 2 * (a[n][1] - a[mid][1]) * i) % M;
  q = (q + (n - mid) * i % M * i % M) % M;
  ans = (ans + q) % M;
 }
 printf("%lld", ans);
 return 0;
}
2022/10/25 07:51
加载中...