#include <bits/stdc++.h>
using namespace std;
#define LL long long
#define rep0(i,n) for(register int i=0;i<n;i++)
#define rep1(i,n) for(register int i=1;i<=n;i++)
#define REP(i,j,n) for(register int i=j;i<n;i++)
const int N=1e5+5;
int a[N],n,k;
//int binary_search(int array[], int n, int value)
//{
// int left = 0;
// int right = n - 1;
//
// while (left <= right)
// {
// int mid = (left + right) >> 1;
//
// if (array[mid] < value)
// left = mid + 1;
// else if (array[mid] > value)
// right = mid + 1;
// else
// return mid;
// }
// return -1;
//}
bool check(int x){
int sum=0;
if (x==0)
return 1;
rep1(i,n){
int b=a[i]/x;
sum+=b;
}
if(sum<k)
return 0;
return 1;
}
int main()
{
cin>>n>>k;
int l=0,r=-1,ans=0;
rep1(i,n){
cin>>a[i];
r=max(r,a[i]);
}
while(l<=r){
int mid=l+r>>1;
if(check(mid)){
ans=mid;
l=mid+1;
}
else{
r=mid-1;
}
}
cout<<ans<<endl;
return 0;
}