求助10分???
查看原帖
求助10分???
735797
XingnoYi楼主2022/9/10 12:01
#include <bits/stdc++.h>
using namespace std;
long long tmp,x,m,l,r,mid,k,maxn=0;
int a[1000001];
int main()
{
	scanf("%d%d",&x,&k);
	for(int i = 1;i <= x;i++)
	{
		scanf("%d",a+i);
		if(a[i] > maxn)
		{
			maxn = a[i];
		}
	}
	l = 1;
	r = maxn;
	while(l <= r)
	{
		mid = (l+r) >> 1;
		tmp=0;
		for(int i = 1;i <= x;i++)
		{
			if(a[i] > mid)
			{
				tmp += a[i]-mid;
			}
		}
		
		if(tmp == k)
		{
			cout << mid;
			return 0;
		}
		else if(tmp > k)
		{
			l = mid+1;
		}
		else
		{
			r = mid-1;
		}
	}
	return 0;
}
2022/9/10 12:01
加载中...