Паскаль! ! провода дано n отрезков провода длиной l1, l2, ln сантиметров. требуется с разрезания получить из них k равных отрезков как можно большей длины, выражающейся целым числом сантиметров. если нельзя получить k отрезков длиной даже 1 см, вывести 0. ограничения: 1 < = n < = 10 000, 1 < = k < = 10 000, 100 < = li < = 10 000 000, все числа целые. входные данные в первой строке находятся числа n и к. в следующих n строках - l1, l2, ln, по одному числу в строке. выходные данные вывести одно число - полученную длину отрезков.
// Внимание! Если программа не работает, обновите версию!
begin
var ЕстьКусков,НадоКусков:integer;
Readln(ЕстьКусков,НадоКусков);
var Длины:=ReadArrInteger(ЕстьКусков);
var ОбщаяДлина:=Длины.Sum;
if НадоКусков>ОбщаяДлина then Writeln(0)
else begin
var ДлинаКуска:=ОбщаяДлина div НадоКусков;
repeat
if Длины.Select(Кусок->Кусок div ДлинаКуска).Sum >=НадоКусков then break
else ДлинаКуска-=1;
until false;
writeln(ДлинаКуска)
end
end.
Пример
4 11
802 743 457 539
200
Ввод -вывод
5 12
6
7
8
9
10
длина отрезка: 3