这题只对了40分
样例没过相差了一,但是自己编了几个过了
求教大佬
代码如下:
#include<bits/stdc++.h>
#define MAXN 1000001
using namespace std;
int n,m,a[MAXN];
int main()
{
scanf("%d%d",&n,&m);
int l=0,r=-0xffff;
for(int i=1;i<=n;i++){
scanf("%d",a+i);
if(a[i]>r) r = a[i];
}
while(l<r){
int mid = l+r >>1;
int ans=0;//每次更新数值
for(int i=1;i<=n;i++)
if(a[i]>mid)
ans += a[i]-mid;//目标高度所能得到的木材
if(ans < m) r = mid - 1;
else l = mid + 1;
}
printf("%d",r);
return 0;
}