60分求助!!!
查看原帖
60分求助!!!
537459
villagehero楼主2024/11/30 19:26

只有60分。。。

#include<bits/stdc++.h>
using namespace std;
#define int long long
const int N=5000010;
int n,m,a[N],max_val,l,r,mid,ans;
int check(int cnt)
{
	ans=0;
	for(int i=1;i<=n;i++)
	{
		if(a[i]>cnt)
		{
			ans+=a[i]-cnt;
		}
	}
	return ans;
}
signed main()
{
	scanf("%lld%lld",&n,&m);
	for(int i=1;i<=n;i++)
	{
		scanf("%lld",&a[i]);
		max_val=max(max_val,a[i]);
	}
	l=0,r=max_val;
	while(l<r)
	{
		mid=(r+l)/2;
// 		printf("%lld %lld %lld\n",l,mid,r);
		if(check(mid)>=m)
		{
			ans=mid;
			l=mid+1;
		}
		else
		{
			r=mid;
		}
	}
	printf("%lld",ans);
	return 0;
}
2024/11/30 19:26
加载中...