#include<bits/stdc++.h>
using namespace std;
const int N=1000010;
long long arr[N],dp[N];
int main()
{
int n;
cin>>n;
for(int i=1;i<=n;i++)
{
cin>>arr[i];
dp[i]=1;
}
for(int i=2;i<=n;i++)
{
if((dp[i-1]-1)%2)
dp[i]=((dp[i-1]/2+arr[i])==arr[i-dp[i-1]]?dp[i-1]+1:1);
else
dp[i]=((dp[i-1]/2+1+arr[i-dp[i-1]])==arr[i]?dp[i-1]+1:1);
}
long long res=0;
for(int i=1;i<=n;i++)
res=max(res,dp[i]);
cout<<res;
return 0;
}
这个代码能ac但是输入
4
8 9 10 8输出2,但是答案是3
全部评论
(3) 回帖