80求调
查看原帖
80求调
1189823
liborui0000楼主2024/8/5 14:03

80分求调

#include <bits/stdc++.h>

using namespace std;
#define int long long
int n;
int a[100010];
int k[100010];

signed main(){
	cin >> n;
	for (int i = 1; i <= n; i++)
		cin >> a[i];
	sort(a + 1, a + 1 + n);
	int l = 1, r = n;
	while (l <= r){
		memset(k, 0, sizeof(k));
		int ans = 0;
		int mid = (l + r) / 2;
		for (int i = 2; i <= n; i++){
			if (a[i] - a[i - 1] > 1)
				ans++;
			else k[ans]++;
		}
		for (int i = 0; i <= ans; i++)
			k[i] += 1;
//		cout << ans << "\n";
//		for (int i = 0; i <= ans; i++)
//			cout << k[i] << " ";
//		cout << "\n";
		int minn = 0x3f3f3f3f;
		for (int i = 0; i <= ans; i++)
			minn = min(minn, k[i]);
		if (minn > mid) l = mid + 1;
		else r = mid - 1;
	}
	cout << l;
	return 0;
}

2024/8/5 14:03
加载中...