90分求助
查看原帖
90分求助
445650
I_never_left楼主2022/10/2 16:06
#include <bits/stdc++.h>
using namespace std;
const int N = 1000000 + 5;
long long n, m, c, a[N], L, R;
bool check(int x) {
	int t = a[1], cnt = 0, sum = 1;
	for(int i = 2; i <= n; ++ i) {
		if(a[i] - t > x || ++ cnt > c) {
			++ sum;
			cnt = 1;
			t = a[i];
		}
	}
	return sum <= m;
}
int main() {
	scanf("%d%d%d", &n, &m, &c);
	for(int i = 1; i <= n; ++ i)
		scanf("%d", &a[i]);
	sort(a + 1, a + n + 1);
	L = 0, R = a[n] - a[1];
	while(L < R) {
		int Mid = (L + R) >> 1;
		if(check(Mid)) R = Mid;
		else L = Mid + 1;
	}
	printf("%d", L);
	return 0;
} 

卡 点3

2022/10/2 16:06
加载中...