比赛 20160707 评测结果 AAAAAAWWAT
题目名称 砍树 最终得分 70
用户昵称 (=@__@=) 运行时间 2.177 s
代码语言 C++ 内存使用 4.13 MiB
提交时间 2016-07-07 16:11:04
显示代码纯文本
#include<iostream> 
#include<cstdio>
#include<cstring> 
#include<algorithm>
using namespace std;
int n,m,a[1001010],h=0;
bool treee(int x)
{
    int tree=0;
	for(int i=1;i<=m;i++)
		if(a[i]>x)
			tree+=a[i]-x;
	if(tree==n)
		h=1;
	if(tree>=n)
		return true;
	else
		return false;
}
int tree()
{
	int left=1,right=a[m];
	while(left+1<right)
	{
		int mid=(left+right)/2;
		if (treee(mid))  
			left=mid;
		else
			right=mid;
		
	}
	if(treee(right))
		return right;
	else
		return left;
}

int main() 
{
	freopen("eko.in","r",stdin);
	freopen("eko.out","w",stdout);
	int i,s;
	cin>>m>>n;
	for(i=1;i<=m;i++)
		cin>>a[i];
	sort(a+1,a+m+1);
	cout<<tree();
	return 0; 
}