Solution
2023-07-18 11:47:34
发布于:广东
9阅读
0回复
0点赞
#include<bits/stdc++.h>
using namespace std;
const int MAXN=1e5+10;
int n,ans;
int c[MAXN],num[MAXN];
inline bool Check(int mid){
if(mid==1) return true;
for(int i=1;i<mid;++i) num[i]=c[i];
sort(num+1,num+mid);
int lim=n-mid;
for(int i=1;i<mid;++i){
if(num[i]>lim) return false;
++lim;
}
return true;
}
int main(){
scanf("%d",&n);
for(int i=1;i<=n;++i)
scanf("%d",&c[i]);
int l=1,r=n+1;
while(l<=r){
int mid=(l+r)>>1;
if(Check(mid)){
ans=mid;l=mid+1;
}
else
r=mid-1;
}
printf("%d\n",n-ans);
return 0;
}
这里空空如也
有帮助,赞一个