为什么只过了一组数据
查看原帖
为什么只过了一组数据
668820
Sincerely_xu楼主2023/1/24 23:54
#include<iostream>
#include<algorithm>
using namespace std;
const int N = 1e6 + 10;
long long a[N], s[N];
long long n, m;
bool check(int mid)
{
	long long res = 0, j = 1;
	while(a[j] - mid <= 0 && j <= n) ++j;//寻找高于mid树坐标 
	if(j <= n) res = s[n] - s[j-1] - mid * (n - j + 1);
	//判断
	if(res <= m) return true;
	return false; 
}
long long bsearch1()
{
	long long l = 0, r = 1e6;
	while(l < r)
	{
		int mid = l + r >> 1;
		if(check(mid)) r = mid;
		else
			l = mid + 1;
	}
	return l;
}
int main()
{
	cin >> n >> m;
	for(int i = 1; i <= n; ++i) scanf("%lld", &a[i]);
	sort(a+1, a+n+1);
	//前缀和 
	for(int i = 1; i <= n; ++i) s[i] =  s[i-1] + a[i];
	long long res = bsearch1();
	printf("%d",res);
	return 0;
}
2023/1/24 23:54
加载中...