找不同悬关
  • 板块灌水区
  • 楼主czh___
  • 当前回复35
  • 已保存回复36
  • 发布时间2024/12/25 19:46
  • 上次更新2024/12/26 09:03:17
查看原帖
找不同悬关
1123452
czh___楼主2024/12/25 19:46

70分

#include<bits/stdc++.h>
using namespace std;
const int N=5e4+1;
int l,n,m,a[N];
bool check(int x){
	int now=0,cnt=0;
	for(int i=1;i<=n+1;i++){
		if(a[i]-a[now]<x)
			cnt++;
		else
			now=i;
	}
	if(cnt<=m)
		return 1;
	else
		return 0;
}
int main(){
	cin>>l>>n>>m;
	a[n+1]=l;
	for(int i=1;i<=n;i++)
		cin>>a[i];
	int L=1,R=l,ans=0;
	while(L<=R){
		int mid=L+(R-L+1)/2;
		if(check(mid)){
			L=mid+1;
			ans=mid;
		}
		else
			R=mid-1;
	}
	cout<<ans;
	return 0;
}

100分

#include<bits/stdc++.h>
using namespace std;
const int N=5e4+1;
int a[N],n,m,L;
bool check(int x){
	int now=0,cnt=0;
	for(int i=1;i<=n+1;i++){
		if(a[i]-a[now]<x)
			cnt++;
		else
			now=i;
	}
	if(cnt<=m)
		return 1;
	else
		return 0;
}
int main(){
	cin>>L>>n>>m;
	a[n+1]=L;
	for(int i=1;i<=n;i++)
		cin>>a[i];
	int r=L,l=1,ans=0;
	while(l<=r){
		int mid=l+(r-l+1)/2;
		if(check(mid)){
			l=mid+1;
			ans=mid;
		}
		else
			r=mid-1;
	}
	cout<<ans;
	return 0;
}

我要崩了!

2024/12/25 19:46
加载中...