我也不知道我的思路是什么,然后第一个点对了
#include <iostream>
#include <cstdio>
#include <algorithm>
#include <cstring>
using namespace std;
int n;
int a[100003];
inline bool check(int x){
int ret = -1;
int tot = 0, cnt = 1;
int v[n + 3];
memset(v,0,sizeof(v));
v[cnt++] = a[1];
for(int i = 2; i <= n; ++i){
if(v[cnt] + 1 == a[i]){
v[cnt++] = a[i];
}else{
ret = max(ret,cnt);
cnt = 1;
v[cnt] = a[i];
}
}
return ret >= x;
}
int main(){
scanf("%d",&n);
for(int i = 1; i <= n; ++i)
scanf("%d",&a[i]);
sort(a + 1, a + n + 1);
int l = 1, r = n;
int ans = -1;
while(l <= r){
int mid = l+r >> 1;
if(check(mid)){
ans = max(mid,ans);
l = mid + 1;
}else
r = mid - 1;
}
printf("%d",ans);
return 0;
}
rt