求助,a10pt,剩下90pt为TLE
查看原帖
求助,a10pt,剩下90pt为TLE
93491
finalx楼主2022/10/24 20:46
#include<bits/stdc++.h>
#define maxn 1000005

using namespace std;

typedef long long ll;
ll a[maxn];

int main(){
	
	ll n,h;
	scanf("%lld %lld",&n,&h);
	
	ll maxx=-1,minx=0x3f3f3f3f3f3f3f3f;//long long最大值为0x3f3f3f3f3f3f3f3f,int最大值为0x3f3f3f3f 
	for(register ll i=0;i<n;++i){
		ll j;
		scanf("%lld",&j);
		maxx=max(j,maxx);
		minx=min(j,minx);
		a[i]=j;
	}
	
	
	ll r=maxx,l=minx;
	while(r>=l){
		ll m=(r-l)/2+l;
		ll sum=0;
		for(register ll i=0;i<n;++i){
			if(a[i]>m) sum+=(a[i]-m); 
		}
		if(sum==h){
			printf("%lld",m);break; 
		} 
		if(sum>h) l=m+1;
		else r=m;
	}	
	
	return 0;
}	
2022/10/24 20:46
加载中...