救!!!
查看原帖
救!!!
856003
Gcy114514楼主2023/4/30 13:10

检查了很久,没有发现问题啊!!!求dalao解答,60分代码没有超时

#include<bits/stdc++.h>
using namespace std;
long long n,m,a[10000005],maxs=-1;
long long money(long long x){//计算获得多少木材
	long long sum=0;
	for(long long i=1;i<=n;i++){
		if(a[i]>x){
			sum=sum+(a[i]-x);
		}
	}
	return sum;
}
long long find(long long x){
	long long l=0,r=maxs,mid;
	while(l<r){
		mid=(l+r)/2;
		//cout<<money(mid)<<endl;
		if(money(mid)<x){
			r=mid;
		}
		if(money(mid)>x){
			l=mid+1;
		}
		if(money(mid)==x){
			return mid;
		}
	}
	return mid;
} 
int main()
{
	cin>>n>>m;
	for(long long i=1;i<=n;i++){
		cin>>a[i]; 
		if(a[i]>maxs){
			maxs=a[i];
		}
	}
	cout<<find(m);
	return 0;
}
2023/4/30 13:10
加载中...