0
已解决
胡逸晖
修练者
修练者
题目链接: 酷町堂:5097
- #include<iostream> using namespace std; int n,d,ans; int a[30005]; int f[30005]; //f[i]:1--i的最长等差子序列 int b[210];//桶数组 int h[210]; //h[i]:数值为i的数的下标 int main(){ cin>>n>>d; for(int i=1;i<=n;i++){ cin>>a[i]; a[i]+=100; b[a[i]]++; h[a[i]]=i; } for(int i=1;i<=n;i++){ if(b[a[i]-d]!=0&&h[a[i]-d]<i){ f[i]=f[h[a[i]-d]]+1; }else{ f[i]=1; } ans=max(ans,f[i]); } cout<<ans; return 0; }