#include <bits/stdc++.h>
#define ll long long
#define ld long double
#define ull unsigned long long
#define pb(x) emplace_back(x)
#define testcase int t ; cin>>t ; while(t--)
#define fx(x) fixed<<setprecision(x)
#define endl "\n"
#define soso ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0)
#define ordered_set tree<int, null_type,less<int>, rb_tree_tag,tree_order_statistics_node_update>
#define arrayn int n;cin>>n;int x[n]; for ( int i = 0 ; i < n ; i++){cin>>x[i];}
#define tolower(x) transform(x.begin(), x.end(), x.begin(), ::tolower);
#define toupper(x) transform(x.begin(), x.end(), x.begin(), ::toupper);
using namespace std ;
int main (){
soso;
int n;
cin>>n;
int h ;
cin>>h;
int arr[n];
for(int i=0;i<n;i++)
{
cin>>arr[i];
}
ll fir =1;
ll last = 1e9+9;
while(fir<last)
{
ll mid =(fir+last)/2;
long double temp;
ll ans {};
for(int i = 0; i<n;i++)
{
temp=ceil((double)arr[i]/(double)mid);
ans+=temp;
}
if(ans==h)
{
cout<<mid<<endl;
return 0;
}
else if(ans<h)
{
last=mid-1;
}
else
{
fir =mid+1;
}
}
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CiAgICAgICAgI2RlZmluZSBsbCBsb25nIGxvbmcKICAgICAgICAjZGVmaW5lIGxkIGxvbmcgZG91YmxlCiAgICAgICAgI2RlZmluZSB1bGwgdW5zaWduZWQgbG9uZyBsb25nCiAgICAgICAgI2RlZmluZSBwYih4KSBlbXBsYWNlX2JhY2soeCkKICAgICAgICAjZGVmaW5lIHRlc3RjYXNlIGludCB0IDsgY2luPj50IDsgd2hpbGUodC0tKQogICAgICAgICNkZWZpbmUgZngoeCkgZml4ZWQ8PHNldHByZWNpc2lvbih4KQogICAgICAgICNkZWZpbmUgZW5kbCAiXG4iCiAgICAgICAgI2RlZmluZSBzb3NvIGlvc19iYXNlOjpzeW5jX3dpdGhfc3RkaW8oMCk7IGNpbi50aWUoMCk7IGNvdXQudGllKDApCiAgICAgICAgI2RlZmluZSBvcmRlcmVkX3NldCB0cmVlPGludCwgbnVsbF90eXBlLGxlc3M8aW50PiwgcmJfdHJlZV90YWcsdHJlZV9vcmRlcl9zdGF0aXN0aWNzX25vZGVfdXBkYXRlPgogICAgICAgICNkZWZpbmUgYXJyYXluIGludCBuO2Npbj4+bjtpbnQgeFtuXTsgZm9yICggaW50IGkgPSAwIDsgaSA8IG4gOyBpKyspe2Npbj4+eFtpXTt9CiAgICAgICAgI2RlZmluZSB0b2xvd2VyKHgpICB0cmFuc2Zvcm0oeC5iZWdpbigpLCB4LmVuZCgpLCB4LmJlZ2luKCksIDo6dG9sb3dlcik7CiAgICAgICAgI2RlZmluZSB0b3VwcGVyKHgpICB0cmFuc2Zvcm0oeC5iZWdpbigpLCB4LmVuZCgpLCB4LmJlZ2luKCksIDo6dG91cHBlcik7CiAgICB1c2luZyBuYW1lc3BhY2Ugc3RkIDsKICAgIGludCBtYWluICgpewogICAgICAgIHNvc287CiAgICAgaW50IG47CiAgICAgY2luPj5uOwogICAgIGludCBoIDsKICAgICBjaW4+Pmg7CiAgICAgaW50IGFycltuXTsKICAgICBmb3IoaW50IGk9MDtpPG47aSsrKQogICAgewogICAgICAgIGNpbj4+YXJyW2ldOwogICAgfQoKICAgIGxsIGZpciA9MTsKICAgIGxsIGxhc3QgPSAxZTkrOTsKICAgIHdoaWxlKGZpcjxsYXN0KQogICAgewogICAgICAgIGxsIG1pZCA9KGZpcitsYXN0KS8yOwoKICAgbG9uZyBkb3VibGUgdGVtcDsKICAgbGwgYW5zIHt9OwoKICAgIGZvcihpbnQgaSA9IDA7IGk8bjtpKyspCiAgICB7CgogICAgICAgIHRlbXA9Y2VpbCgoZG91YmxlKWFycltpXS8oZG91YmxlKW1pZCk7CgogICAgICAgIGFucys9dGVtcDsKICAgIH0KCiAgICBpZihhbnM9PWgpCiAgICB7CiAgICAgICAgY291dDw8bWlkPDxlbmRsOwogICAgICAgIHJldHVybiAwOwogICAgfQogICAgZWxzZSBpZihhbnM8aCkKICAgIHsKICAgICAgICBsYXN0PW1pZC0xOwogICAgfQogICAgZWxzZQogICAgewogICAgICAgIGZpciA9bWlkKzE7CiAgICB9CgogICAgfQoKICAgIH0KCg==