#include <vector>
#include <iostream>

using namespace std;

int solve(const vector<int> & L, int start, int end, int goal)
{
  if (end - start <= 1)
    return start;

  int cur = 0, mid = (start + end) / 2;
  for (int i = 0; i < L.size(); i++)
  {
    cur += L[i] / mid;
  }
  if (cur < goal)
    return solve(L, start, mid, goal);
  else
    return solve(L, mid, end, goal);
}

int main()
{
  int n, k;
  cin >> n >> k;
  vector<int> L(n);
  double sum = 0; 
  int m = 0;
  for (int i = 0; i < n; i++)
  {
    cin >> L[i];
    sum += L[i];
    m = max(m, L[i]);
    
  }
  if (sum < k)
  {
    cout << 0;
  }
  else
  {
    cout << solve(L, 1, m + 1, k);
  }
  return 0;

}
