0
已解决
刘乐宸
新手天翼
新手天翼
#include<iostream>
#include<cstring>
#include<cmath>
#include<string>
#include<cstdio>
using namespace std;
int a[40005],f[40005],d,n,x;
int dfs(int i){
if(f[i]!=-1) return f[i];
int mx=-1;
for(int j=1;j<=i-1;j++){
if(x==0){
if(a[i]-a[j]==d){
x=1;
mx=max(mx,dfs(j));
}
if(a[j]-a[i]==d){
x=2;
mx=max(mx,dfs(j));
}
}
else if(x==1&&a[i]-a[j]==d)
mx=max(mx,dfs(j));
else if(x==2&&a[j]-a[i]==d)
mx=max(mx,dfs(j));
}
if(mx==-1){
f[i]=1;
return 1;
}
else{
f[i]=mx+1;
return mx+1;
}
}
int main()
{
memset(f,-1,sizeof(f));
int mx1=-1;
cin>>n>>d;
for(int i=1;i<=n;i++){
cin>>a[i];
}
for(int i=1;i<=n;i++){
mx1=max(mx1,dfs(i));
}
cout<<mx1;
return 0;
}
没错,是我