Паскаль! Помогите пожалуйста! Провода Дано N отрезков провода длиной L1, L2, ..., LN сантиметров. Требуется с помощью разрезания получить из них K равных отрезков как можно большей длины, выражающейся целым числом сантиметров. ...

Паскаль! Помогите пожалуйста! Провода Дано 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, по одному числу в строке. Выходные данные Вывести одно число - полученную длину отрезков.
Гость
Ответ(ы) на вопрос:
Гость
Решение в прикрепленном файле. Ввод -вывод 5 12 6 7 8 9 10 длина отрезка: 3
Гость
// PascalABC.NET 3.2, сборка 1379 от 21.01.2017 // Внимание! Если программа не работает, обновите версию! 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
Не нашли ответ?
Ответить на вопрос
Похожие вопросы