10分。。。求调
查看原帖
10分。。。求调
572133
潘德理2010楼主2022/12/21 16:18
#include<bits/stdc++.h>
using namespace std;
int n,m,x[int(1e6+10)]={},lo,hi,mid,ans,maxi=0;
int main()
{
	cin>>n>>m;
	for(int i=1;i<=n;i++) cin>>x[i],maxi=max(maxi,x[i]);
	lo=1;
	hi=maxi;
	while(lo+1<hi)
	{
		ans=0;
		mid=(lo+hi)/2;
		for(int i=1;i<=n;i++) ans+=max(0,x[i]-mid);
		if(ans>=m) lo=mid;
		else hi=mid;
	}
	ans=0;
	for(int i=1;i<=n;i++) ans+=max(0,x[i]-lo);
	if(ans>m) cout<<hi;
	else cout<<lo;
}
2022/12/21 16:18
加载中...