比赛 20160707 评测结果 AAAAWWWWWW
题目名称 砍树 最终得分 40
用户昵称 ミント 运行时间 1.291 s
代码语言 C++ 内存使用 4.13 MiB
提交时间 2016-07-07 16:01:04
显示代码纯文本
#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>

using namespace std;

const int maxn = 1000000 + 100;
int n, m;
int num[maxn];

inline bool cal(int hi){
	int ret = 0;
	for(int i=1;i<=n;i++)
		if(num[i]>=hi)
			ret += num[i] - hi;
	return ret>=m?true:false;
}
int main(){
	freopen("eko.in", "r", stdin);
	freopen("eko.out", "w", stdout);
	
	cin>>n>>m;
	for(int i=1;i<=n;i++)cin>>num[i];
	
	int left = 0, right = 1000000000;
	while(left+1<right){
		//cout<<left<<' '<<right<<endl;
		int mid = left+((right-left)>>1);//cout<<mid<<endl;
		if(cal(mid))left = mid;
		else right = mid;
	}
	cout<<left<<endl;
	//cout<<left<<' '<<right<<endl;
	
	return 0;
}