比赛 |
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;
}