Mistrzostwa Polski Szkół Średnich w Programowaniu Zespołowym 2024
Problem description
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 | |
|
|
Wejście | Wyjście | |
|
|
Wejście | Wyjście | |
|
|