#include<bits/stdc++.h>
using namespace std;
int dp[262145][59],N,ans;
int main(){
scanf("%d",&N);
for(int i=1;i<=N;i++){
int ipt;
scanf("%d",&ipt);
dp[i][ipt]=i;
}
for(int i=1;i<=58;i++)
for(int j=1;j<=N;j++){
if(!dp[j][i]) dp[j][i]=dp[dp[j][i-1]+1][i-1];
if(dp[j][i]) ans=max(ans,i);
}
printf("%d",ans);
}
#include<bits/stdc++.h>
using namespace std;
int dp[262145][59],N,ans;
int main(){
scanf("%d",&N);
for(int i=1;i<=N;i++){
int ipt;
scanf("%d",&ipt);
dp[i][ipt]=i+1;
}
for(int i=1;i<=58;i++)
for(int j=1;j<=N;j++){
if(!dp[j][i]) dp[j][i]=dp[dp[j][i-1]][i-1];
if(dp[j][i]) ans=max(ans,i);
}
printf("%d",ans);
}
前面那样写样例会直接输出58
后面才能正常过
搞不太懂为什么9,13行改成全闭区间这题会过不去