社区讨论

求助,a10pt,剩下90pt为TLE

P1873[COCI 2011/2012 #5] EKO / 砍树参与者 3已保存回复 3

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
3 条
当前快照
1 份
快照标识符
@lo7qgr45
此快照首次捕获于
2023/10/27 06:05
2 年前
此快照最后确认于
2023/10/27 06:05
2 年前
查看原帖
CPP
#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;
}	

回复

3 条回复,欢迎继续交流。

正在加载回复...