代码:
#include<bits/stdc++.h>
using namespace std;
int n,a[262145],f[262145][59],ans;
int main(){
scanf("%d",&n);
for(int i = 1;i <= n;i ++){
scanf("%d",&a[i]);
f[i][a[i]] = i;
ans = max(ans,a[i]);
}
for(int num = 2;num <= 58;num ++){
for(int i = 1;i < n;i ++){
if(f[i][num - 1] && f[f[i][num - 1] + 1][num - 1]){
f[i][num] = f[f[i][num - 1] + 1][num - 1];
ans = max(ans,num);
}
}
}
printf("%d",ans);
return 0;
}
左闭右闭,但是有特判,应该不是这个问题吧
(Wrong Answer.wrong answer On line 1 column 2, read 8, expected 7.)