#include<cstdio>
#include<algorithm>
using namespace std;
long long a[100002],n,k;
long long pd(long long a[],long long n,long long k,long long num){
long long k1=0;
for(long long i=1;i<=n;i++){
while(a[i]>=num){
a[i]-=num;
k1++;
}
}
if(k1==k)return 1;
if(k1>k)return 2;
if(k1<k)return 3;
}
long long ef(long long start,long long end){
long long mid=(start+end)/2;
long long h=pd(a,n,k,mid);
if(h==1)return mid;
if(h==2)return ef(mid+1,end);
if(h==3)return ef(start,mid-1);
}
int main(){
long long g,max=0;
scanf("%lld%lld",&n,&k);
for(long long i=1;i<=n;i++){
scanf("%lld",&a[i]);
if(max<a[i])max=a[i];
}
long long ans=ef(1,max);
while(pd(a,n,k,ans)==1)ans++;
printf("%lld",ans-1);
return 0;
}