#include <bits/stdc++.h>
using namespace std;
bool fun(int mid,vector<int>&arr,int max_moves){
int sum=0;
for(int i=0;i<arr.size();i++){
sum+=(arr[i]/mid+(arr[i]%mid!=0));
}
return sum<=max_moves;
}
int main()
{
vector<int>arr={4,3,2,7};
int max_moves=5;
int l=1; //not l=0 why cause that will cause undefined behavioun in edgecase in fun (divide by 0)/.
int h=*max_element(arr.begin(),arr.end());
int ans=-1;
while(l<=h){
int mid=l+(h-l)/2;
if(fun(mid,arr,max_moves)){
ans=mid;
h=mid-1;
}
else{
l=mid+1;
}
}
cout<<ans<<endl;
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CmJvb2wgZnVuKGludCBtaWQsdmVjdG9yPGludD4mYXJyLGludCBtYXhfbW92ZXMpewogICAgaW50IHN1bT0wOwogICAgZm9yKGludCBpPTA7aTxhcnIuc2l6ZSgpO2krKyl7CiAgICAgICAgc3VtKz0oYXJyW2ldL21pZCsoYXJyW2ldJW1pZCE9MCkpOwogICAgfQogICAKICAgIHJldHVybiBzdW08PW1heF9tb3ZlczsKICAgIAp9CgppbnQgbWFpbigpCnsKICAgIHZlY3RvcjxpbnQ+YXJyPXs0LDMsMiw3fTsKICAgIGludCBtYXhfbW92ZXM9NTsKICAgIAogICAgaW50IGw9MTsgLy9ub3QgbD0wIHdoeSBjYXVzZSB0aGF0IHdpbGwgY2F1c2UgdW5kZWZpbmVkIGJlaGF2aW91biBpbiBlZGdlY2FzZSBpbiBmdW4gKGRpdmlkZSBieSAwKS8uCiAgICBpbnQgaD0qbWF4X2VsZW1lbnQoYXJyLmJlZ2luKCksYXJyLmVuZCgpKTsKICAgIGludCBhbnM9LTE7CiAgICB3aGlsZShsPD1oKXsKICAgICAgICAgICBpbnQgbWlkPWwrKGgtbCkvMjsKICAgICAgICAgICBpZihmdW4obWlkLGFycixtYXhfbW92ZXMpKXsKICAgICAgICAgICAgICAgYW5zPW1pZDsKICAgICAgICAgICAgICAgaD1taWQtMTsKICAgICAgICAgICB9CiAgICAgICAgICAgZWxzZXsKICAgICAgICAgICAgICAgbD1taWQrMTsKICAgICAgICAgICB9CgogICAgfQogICAgY291dDw8YW5zPDxlbmRsOwogICAgcmV0dXJuIDA7Cn0=