65分重开
查看原帖
65分重开
1252442
lucy2012楼主2024/8/14 23:16

上个帖太长了,重开(重生)喵。

代码这些完全按题解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的代码实现思路喵。

2024/8/14 23:16
加载中...