#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 (){
int n;
cin>>n;
int h ;
cin>>h;
int arr[n];
int mx = INT_MIN;
for(int i=0;i<n;i++)
{
cin>>arr[i];
mx = max(mx,arr[i]);
}
if(h==n)
{
cout<<mx<<endl;
}
else
{
int fir =1;
ll last = mx;
while(fir<last)
{
ll mid =(fir+last)/2;
double temp;
int 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;
}
else
{
fir =mid;
}
}
}
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CiAgICAgICAgI2RlZmluZSBsbCBsb25nIGxvbmcKICAgICAgICAjZGVmaW5lIGxkIGxvbmcgZG91YmxlCiAgICAgICAgI2RlZmluZSB1bGwgdW5zaWduZWQgbG9uZyBsb25nCiAgICAgICAgI2RlZmluZSBwYih4KSBlbXBsYWNlX2JhY2soeCkKICAgICAgICAjZGVmaW5lIHRlc3RjYXNlIGludCB0IDsgY2luPj50IDsgd2hpbGUodC0tKQogICAgICAgICNkZWZpbmUgZngoeCkgZml4ZWQ8PHNldHByZWNpc2lvbih4KQogICAgICAgICNkZWZpbmUgZW5kbCAiXG4iCiAgICAgICAgI2RlZmluZSBzb3NvIGlvc19iYXNlOjpzeW5jX3dpdGhfc3RkaW8oMCk7IGNpbi50aWUoMCk7IGNvdXQudGllKDApCiAgICAgICAgI2RlZmluZSBvcmRlcmVkX3NldCB0cmVlPGludCwgbnVsbF90eXBlLGxlc3M8aW50PiwgcmJfdHJlZV90YWcsdHJlZV9vcmRlcl9zdGF0aXN0aWNzX25vZGVfdXBkYXRlPgogICAgICAgICNkZWZpbmUgYXJyYXluIGludCBuO2Npbj4+bjtpbnQgeFtuXTsgZm9yICggaW50IGkgPSAwIDsgaSA8IG4gOyBpKyspe2Npbj4+eFtpXTt9CiAgICAgICAgI2RlZmluZSB0b2xvd2VyKHgpICB0cmFuc2Zvcm0oeC5iZWdpbigpLCB4LmVuZCgpLCB4LmJlZ2luKCksIDo6dG9sb3dlcik7CiAgICAgICAgI2RlZmluZSB0b3VwcGVyKHgpICB0cmFuc2Zvcm0oeC5iZWdpbigpLCB4LmVuZCgpLCB4LmJlZ2luKCksIDo6dG91cHBlcik7CiAgICB1c2luZyBuYW1lc3BhY2Ugc3RkIDsKICAgIGludCBtYWluICgpewogICAgIGludCBuOwogICAgIGNpbj4+bjsKICAgICBpbnQgaCA7CiAgICAgY2luPj5oOwogICAgIGludCBhcnJbbl07CiAgICAgaW50IG14ID0gSU5UX01JTjsKICAgICBmb3IoaW50IGk9MDtpPG47aSsrKQogICAgewogICAgICAgIGNpbj4+YXJyW2ldOwogICAgICAgIG14ID0gbWF4KG14LGFycltpXSk7CiAgICB9CiAgICBpZihoPT1uKQogICAgewogICAgICAgIGNvdXQ8PG14PDxlbmRsOwogICAgfQogICAgZWxzZQogICAgewogICAgaW50IGZpciA9MTsKICAgIGxsIGxhc3QgPSBteDsKICAgIHdoaWxlKGZpcjxsYXN0KQogICAgewogICAgICAgIGxsIG1pZCA9KGZpcitsYXN0KS8yOwoKICAgIGRvdWJsZSB0ZW1wOwogICAgaW50IGFucyB7fTsKCiAgICBmb3IoaW50IGkgPSAwOyBpPG47aSsrKQogICAgewoKICAgICAgICB0ZW1wPWNlaWwoKGRvdWJsZSlhcnJbaV0vKGRvdWJsZSltaWQpOwoKICAgICAgICBhbnMrPXRlbXA7CiAgICB9CgogICAgaWYoYW5zPT1oKQogICAgewogICAgICAgIGNvdXQ8PG1pZDw8ZW5kbDsKICAgICAgICByZXR1cm4gMDsKICAgIH0KICAgIGVsc2UgaWYoYW5zPGgpCiAgICB7CiAgICAgICAgbGFzdD1taWQ7CiAgICB9CiAgICBlbHNlCiAgICB7CiAgICAgICAgZmlyID1taWQ7CiAgICB9CgogICAgfQoKICAgIH0KCiAgICB9Cg==