记录编号 453786 评测结果 AAAAAAAAAA
题目名称 砍树 最终得分 100
用户昵称 GravatarFisher. 是否通过 通过
代码语言 C++ 运行时间 0.407 s
提交时间 2017-09-24 14:38:29 内存使用 4.13 MiB
显示代码纯文本
#include <iostream>
#include <cstdio>
#include <algorithm>
#define ll long long
using namespace std;
inline int read(){
	int x=0,f=1;char c=getchar();
	while(c<'0'||c>'9'){if(c=='-')f=-1;c=getchar();}
	while(c>='0'&&c<='9'){x=(x<<1)+(x<<3)+c-'0';c=getchar();}
	return x*f;
}
const int maxn=1000010;
int n,m;
int shu[maxn];
int l,r;
inline bool ok(int g){
	ll sum=0;
	for(int i=1;i<=n;i++){
		if(shu[i]>g)sum+=shu[i]-g;
	}
	if(sum>=m)return true;
	else return false;
}
inline void erfen(){
	while(l+1<r){
		int m=(l+r)>>1;
		//cout<<l<<" "<<m<<" "<<r<<endl;
		if(ok(m))l=m;
		else r=m;
	}
	if(ok(r))printf("%d\n",r);
	else printf("%d\n",l);
}
int main(){
	freopen("eko.in","r",stdin);
	freopen("eko.out","w",stdout);
	n=read();m=read();
	for(int i=1;i<=n;i++){shu[i]=read();r=max(r,shu[i]);}
	erfen();
	return 0;
}