记录编号 |
278291 |
评测结果 |
AAAAAAAAAA |
题目名称 |
砍树 |
最终得分 |
100 |
用户昵称 |
Arrow |
是否通过 |
通过 |
代码语言 |
C++ |
运行时间 |
0.729 s |
提交时间 |
2016-07-07 16:59:27 |
内存使用 |
7.94 MiB |
显示代码纯文本
#include<iostream>
#include<fstream>
#include<algorithm>
using namespace std;
ifstream fin("eko.in");
ofstream fout("eko.out");
long long n,m;
long long a[1000000]={0};
bool check(int x){
long long s=0;
for(int i=0;i<n;i++){
if(a[i]>x)
s+=a[i]-x;
}
return s>=m;
}
int solve(){
long long 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;
}