我原来的代码逝这样的:
#include<bits/stdc++.h>
using namespace std;
long long n,m,mx;
long long h[20000007];
long long cut(long long hgt){
long long ans=0;
for(int i=1;i<=n;i++)
if(h[i]>hgt)ans+=(h[i]-hgt);
return ans;
}
int main(){
scanf("%lld%lld",&n,&m);
for(int i=1;i<=n;i++)scanf("%lld",&h[i]),mx=max(mx,h[i]);
long long l=1,r=mx,mid;
while(l<r&&cut(mid)!=m){
mid=(l+r)/2;
if(cut(mid)>m)l=mid+1;
else r=mid;
}
printf("%lld",mid);
return 0;
}
WA了五个点
然后,照着题解改:
第一次改成了八个WA;
第二次改成了9个TLE……
到底哪里错了?!?!?
QAQ QAQ QAQ QAQ QAQ QAQ QAQ QAQ