记录编号 278360 评测结果 AAAAAAAAAA
题目名称 砍树 最终得分 100
用户昵称 GravatarA8_LQC 是否通过 通过
代码语言 C++ 运行时间 0.635 s
提交时间 2016-07-07 17:53:42 内存使用 4.17 MiB
显示代码纯文本
#include<stdio.h>
#include<iostream>
#include<algorithm>
using namespace std;
long long  M=0;
int N,tree[1010000]={0};
bool cmp(int a,int b){
	return a>b;
} 
int HHH(int H){
	long long sum=0;
	for(int x=0;x<N;x++){
	    if(tree[x]>=H)sum+=tree[x]-H;
	    if(tree[x]<H)break;
	}
	if(sum>=M)return 1;
	else return 0;
}
int main(){
	freopen("eko.in","r",stdin);
	freopen("eko.out","w",stdout);
	int x,y,i;
	scanf("%d%d",&N,&M);
	for(x=0;x<N;x++){
		scanf("%d",&tree[x]);
	}
	sort(tree,tree+N,cmp);
//	printf("%d\n",tree[0]);
    int left=0,mid,right=tree[0];
//    printf("%d %d\n",right,left);
	while(left+1<right){
		mid=(left+right)/2;
//		printf("HHH(mid)=%d,mid=%d\n",HHH(mid),mid);
		if(HHH(mid)==0)right=mid;
		else if(HHH(mid)==1)left=mid;
	}
	if(HHH(left))printf("%d",left);
	else printf("%d",right);
	return 0;
}