比赛 20160707 评测结果 AAAAAAAAAA
题目名称 砍树 最终得分 100
用户昵称 ZXCVBNM_1 运行时间 0.601 s
代码语言 C++ 内存使用 7.94 MiB
提交时间 2016-07-07 15:20:43
显示代码纯文本
#include<bits/stdc++.h>
using namespace std;
#define LL long long
#define MAXN 1000010
LL n,a[MAXN];
LL check(LL k)
{
    LL sum=0LL,i;
    for(i=1;i<=n;i++)if(a[i]>=k)sum+=(a[i]-k);
    return sum;
}
int main()
{
    freopen("eko.in","r",stdin);
    freopen("eko.out","w",stdout);
    LL m,i,mx,l,r,ans,mid;
    scanf("%lld %lld",&n,&m);
    mx=-1;
    for(i=1;i<=n;i++){scanf("%lld",&a[i]);mx=max(mx,a[i]);}
    l=0;r=mx;ans=0;
    while(l<=r)
    {
        mid=(l+r)/2;
        if(check(mid)>=m){ans=mid;l=mid+1;}
        else r=mid-1;
    }
    printf("%lld",ans);
    return 0;
}