比赛 |
20160707 |
评测结果 |
AAAAAAWWWW |
题目名称 |
砍树 |
最终得分 |
60 |
用户昵称 |
Arrow |
运行时间 |
0.516 s |
代码语言 |
C++ |
内存使用 |
4.13 MiB |
提交时间 |
2016-07-07 15:18:17 |
显示代码纯文本
#include<iostream>
#include<fstream>
#include<algorithm>
using namespace std;
ifstream fin("eko.in");
ofstream fout("eko.out");
int n,m;
int a[1000000]={0};
bool check(int x){
int s=0;
for(int i=0;i<n;i++){
if(a[i]>x)
s+=a[i]-x;
}
return s>=m;
}
int solve(){
int left=0,right=a[n-1]+30,mid;//fout<<a[n-1]<<endl;
while(left+1<right){
mid=(left+right)/2;
if(check(mid)) left=mid;
else right=mid;
}
if(check(left)) return left;
else return right;
}
int main()
{
fin>>n;
fin>>m;
for(int i=0;i<n;i++)
fin>>a[i];
sort(a+0,a+n);
fout<<solve()<<endl;
fin.close();
fout.close();
return 0;
}