代码如下
#include<iostream>
#include<vector>
#include<cstring>
using namespace std;
int INF=998244353;
vector<int>g[200005];
int h[10005],f[10005][10005];//
void lesson1()
{
//cout<<1;
int n;
scanf("%d",&n);
for(int i=1;i<=n;i++)scanf("%d",&h[i]);
memset(f,0,sizeof(f));
//g[h[1]].push_back(1);//
//cout<<1;
int ans=0;
for(int i=1;i<=n;i++)
{
for(int j=i+1;j<=n;j++){
int k=h[j]-h[i];
int l=h[i]-k;
f[i][j]=0;
//cout<<i<<' '<<j<<" "<<k<<" "<<l<<"!\n";
if(l>=0)//
for(int t=0;t<g[l].size();t++)
{
//cout<<i<<" "<<j<<" "<<l<<" "<<t<<"?\n";
f[i][j]+=f[g[l][t]][i];
f[i][j]%=INF;
//cout<<1;
}
f[i][j]+=1;
//f[i][j]%=INF;//
ans+=f[i][j];
ans%=998244353;
}
//cout<<"a";
g[h[i]].push_back(i);
}/*
for(int i=1;i<=n;i++)
{
for(int j=1;j<=n;j++)
{
printf("f[%d][%d]=%d ",i,j,f[i][j]);
}
cout<<"\n";
}//*/
printf("%d",(ans+n)%INF);//
}
void lesson2()
{
for(int i=1;i<=10;i++)cout<<g[i].size();
}
int main()
{
lesson1();
return 0;
}