90分,第一个测试点错了,求各位老师帮忙!
查看原帖
90分,第一个测试点错了,求各位老师帮忙!
892571
ltzx2022_kanxinyi_5楼主2023/5/13 14:23
#include <bits/stdc++.h>
using namespace std;
long long n,m,l,r,ans,sum,h[1000001];
int main(){
	cin>>n>>m;
	for(int i=1;i<=n;i++)
	{
		cin>>h[i];
		r=max(r,h[i]);
	}
	while(l<=r)
	{
		long long  mid=(l+r)/2;
		for(int i=1;i<=n;i++)
		{
			if(h[i]>mid)
			{
				sum+=h[i]-mid;
			}
		}
		if(sum<=m)
		{
			if(sum==m)
			{
				ans=mid; 
			}
			r=mid-1; 
		}
		else{
			ans=mid;
			l=mid+1; 
		}
		sum=0;
	}
	cout<<ans;
	return 0;
} 

2023/5/13 14:23
加载中...