上个帖太长了,重开(重生)喵。
代码这些完全按题解2来写,65分:
#include<bits/stdc++.h>
using namespace std;
int n,l,a[100010],h,le,r,mid;
bool f(int x){
int cnt1=0,cnt2=0;
for(int j=1;j<=n;j++){
if(a[j]>=a[x])
cnt1++;
if(a[j]==a[x]-1)
cnt2++;
}
if(cnt1>=x)
return 1;
if(x-cnt1<=l&&cnt2>=a[x]-cnt1)
return 1;
return 0;
}
int main(){
cin>>n>>l;
for(int i=1;i<=n;i++){
cin>>a[i];
}
sort(a+1,a+1+n);
le=1,r=n;
while(le<=r){
mid=(le+r)/2;
if(f(mid))
le=mid+1;
else
r=mid-1;
}
cout<<a[r];
return 0;
}
再求下题解1的代码实现思路喵。