```cpp
#include<iostream>
#include<algorithm>
#include<cstdio>
#include<cstring>
#define mod %998244353
#define ll long long
using namespace std;
const int N = 1e3 + 10;
const int M = 2e4 + 10;
int n;
int h[N];
ll dp1[M][N];
ll dp2[M][N];
ll G1[M];
ll G2[M];
ll ans = 0;
int D = 0, minH = 0x7fffffff, maxH = 0;
int main()
{
cin >> n;
for (int i = 1; i <= n; i++)
{
cin >> h[i];
minH = min(minH, h[i]);
maxH = max(maxH, h[i]);
}
D = maxH - minH;
for (int k = 0; k <= D; k++)
{
memset(G1, 0, sizeof(G1));
memset(G2, 0, sizeof(G2));
for (int i = 1; i <= n; i++)
{
if (h[i] - k >= minH)
dp1[k][i] = G1[h[i] - k];
if (h[i] + k <= maxH && k)
dp2[k][i] = G2[h[i] + k];
G1[h[i]] += dp1[k][i] mod + 1, G1[h[i]] mod;
G2[h[i]] += dp2[k][i] mod + 1, G2[h[i]] mod;
ans += (dp1[k][i] mod + dp2[k][i] mod ) mod, ans mod;
}
}
cout << (ans + n) mod;
return 0;
}
```
已解决
by Kdlyh @ 2023-11-14 17:52:59