比赛 20160707 评测结果 TTTTTTTTTT
题目名称 砍树 最终得分 0
用户昵称 5458 运行时间 10.014 s
代码语言 C++ 内存使用 4.13 MiB
提交时间 2016-07-07 16:15:19
显示代码纯文本
#include <cstdio>
#include <iostream>
#include <algorithm>
using namespace std;
int a[1000000];
int zws(int x,int y){
	return 1.0*(x+y)/2+0.999;//+0.5?
}
bool compare(int x,int y){
	return x>y;
}
int main(){
	freopen("eko.in","r",stdin);
	freopen("eko.out","w",stdout);
	std::cout.sync_with_stdio(false);
	int n,m,mid1,left,right,ans=0;
	cin>>n>>m;
	for(int i=0;i<n;i++) cin>>a[i];
	sort(a,a+n,compare);
	
	left=a[0],right=a[n-1];
	mid1=zws(left,right); //初次取均值
	while(left-1!=right){
	for(int i=0;a[i]>=mid1;i++)
		ans+=(a[i]-mid1);
	if(ans<m) left=mid1;
	if(ans==m){ cout<<mid1; return 0;}
	else right=mid1;
	mid1=zws(right,left);
	ans=0;
	}
	cout<<ans;
	return 0;
}