投票箱
2025-07-27 08:56:39
发布于:上海
#include<iostream>
#include<cstdio>
#include<cmath>
#include<algorithm>
using namespace std;
const int N = 1e6 + 10;
int a[N];
int n,m;
bool check(int x){
long long ans=0;
for(int i=1;i<=n;i++){
ans+=ceil(a[i]*1.0/x);
}
return ans<=m;
}
int main() {
while(cin>>n>>m){
if(n==-1&&m==-1)break;
int maxn=0;
for (int i = 1; i <= n; i++) {
cin >> a[i];
maxn=max(maxn,a[i]);
}
int ans = 0;
int l=1 ,r=maxn ;
while(l<=r){
int mid=(l+r)/2;
if(check(mid)){
ans=mid;
r=mid-1;
}else{
l=mid+1;
}
}
cout<<ans<<endl;
}
return 0;
}
这里空空如也
有帮助,赞一个