- [COCI2011-2012#5] EKO / 砍树
90
- 2024-2-27 20:08:28 @
#include<bits/stdc++.h>
using namespace std;
long long a[1000001];
long long n,m,maxn=0;
bool check(int h){
long long cd=0;
for(int i=1;i<=n;i++){
if((a[i]-h)>0){
cd+=a[i]-h;
}
}
return cd>=m;
}
void f(){
double l=0,r=maxn;
double mid;
while(l<r){
mid=(r+l)/2;
if(check(mid)){
l=mid+0.0000001;
}
else{
r=mid-0.0000001;
}
}
cout<<int(mid)-1;
}
int main(){
cin>>n>>m;
for(int i=1;i<=n;i++){
cin>>a[i];
if(a[i]>maxn){
maxn=a[i];
}
}
f();
}
1 comments
-
zengfj LV 4 MOD @ 2024-2-28 15:42:56
想法还挺不错的,但不算正解。
- 1
Information
- ID
- 998
- Time
- 1000ms
- Memory
- 256MiB
- Difficulty
- 8
- Tags
- # Submissions
- 223
- Accepted
- 31
- Uploaded By