Problem description


Kabelki
(kabelki)
Limit pamięci: 32 MB
Limit czasu: 1.00 s

Jasio zabrał się za pracę w firmie KabloPol S.A.. Jego zadaniem jest cięcie druta na równe kawałki, co najmniej na K części.

Dokładniej, Jasio ma do dyspozycji N kawałków drutów o różnych długościach. Szef zlecił mu pocięcie tych kawałków w taki sposób, aby uzyskać co najmniej K części o takiej samej długości – muszą to być najdłuższe możliwe części, aby Jasio nie został posądzony o marnotractwo druta. Zakładamy, że wszystkie druty, którymi dysponuje Jasio mają takie same parametry, więc każdy drut jest jednakowo dobry. Oczywiście, Jasio zna się co najwyżej na obróbce druta, a nie na obliczaniu jakichś dziwactw… Pomóż mu, aby nie wyleciał ze swojej ukochanej pracy.

Napisz program, który: wczyta liczbę kawałków druta, którymi dysponuje Jasio, liczbę kawałków druta, które ma uzyskać oraz długości drutów, które posiada, znajdzie największą możliwą długość długość każdego z K kawałków w optymalnym podziale Jasia, wypisze wynik na standardowe wyjście.

Wejście

W pierwszym wierszu wejścia znajdują się dwie liczby naturalne N i K, określające kolejno: liczbę kawałków druta, którymi dysponuje Jasio oraz liczbę kawałków druta, które Jasio ma uzyskać. W drugim wierszu znajduje się N liczb całkowitych Ai, określających kolejne długości kawałków druta, które posiada Jasio.

Wyjście

W pierwszym i jedynym wierszu wyjścia wypisać należy dokładnie liczbę rzeczywistą – maksymalną długość kawałków druta, które może uzyskać Jasio, zgodnie z warunkami zadania.

Odpowiedź zostanie zaakceptowana jeśli będzie się różnić od poprawnej o co najwyżej 10−6.

Ograniczenia

1 ≤ N ≤ 200 000, 1 ≤ K ≤ 109, 1 ≤ Ai ≤ 109.

Przykład

Wejście Wyjście
4 7
6 5 4 6
2.4999999
Wejście Wyjście
1 1
1
0.9999999
Wejście Wyjście
1 9
1
0.1111111