蒟蒻提问为什么r改成n就90分,改成a[n]或者a[n]-a[1]就100分了?
查看原帖
蒟蒻提问为什么r改成n就90分,改成a[n]或者a[n]-a[1]就100分了?
463562
Dreamerlee✅楼主2021/2/18 17:04
#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
#define maxn 1000010
#define INF 1e9
int a[maxn], n, c;
bool p(int d)
{
	int k = 0, last = -INF;
	for (int i = 1; i <= n; i++)
	{
		if (a[i] - last >= d)
		{
			last = a[i];
			k++;
		}
	}
	return k >= c;
}
int main()
{
	cin >> n >> c;
	for (int i = 1; i <= n; i++)
		cin >> a[i];
	sort(a + 1, a + n + 1);
	int l = 0, r = a[n], ans=-9999, mid;
    //这里r如果改为r=n就90分,改为=a[n]就100分
	while (l <= r)
	{
		mid = l + (r - l)/2;
		if (p(mid))
		{
			ans = max(ans, mid);
			l = mid + 1;
		}
		else
			r = mid - 1;
	}
	cout << ans;
	return 0;
}
2021/2/18 17:04
加载中...