Дано N целых чисел. Число называется "красивым", если его можно разделить на 3 без остатка. Вам нужно выбрать таких K "красивых" чисел, чтобы их сумма была минимальна. Необходимо вывести эту сумму.
Формат ввода:
N K
A[1] A[2] ... A[N]
Ограничения:
1<=N, K<=100
1<=A[i]<=1000
Гарантируется, что "красивых" чисел всегда >= K.
Формат вывода:
Ans – минимальная сумма K "красивых" чисел.
Пример ввода: Пример вывода:18
7 4
3 2 3 6 1 12 6
Answers & Comments
var
b : array of integer;
m : integer;
begin
// Ввод данных
var n := ReadInteger('Введите число N всех чисел массива: ');
var k := ReadInteger('Введите число К "красивых" чисел: ');
writeln('Введите все числа в массиве');
var a := ReadArrInteger(n);
// Резервируем место для слагаемых
b := new integer[k];
// Просмотрим все данные числа
foreach var i in a do
// Выберем только кратные трем
if i mod 3 = 0 then begin
// Если есть свободное место, поместим туда
m := b.FindIndex(x -> x=0);
if m <> -1 then b[m] := i
else
// Если свободного места нет, найдем наибольший элемент
// и заменим его
begin
m := b.FindIndex(x -> (x>i) and (x=b.Max));
if m <> -1 then b[m] := i;
end;
end;
// Выведем сумму
write('Сумма элементов - ', b.Sum)
end.