Дано N целых чисел. Число называется "красивым", если его можно разделить ** 3 без...

0 голосов
22 просмотров

Дано N целых чисел. Число называется "красивым", если его можно разделить на 3 без остатка. Вам нужно выбрать таких K "красивых" чисел, чтобы их сумма была минимальна. Необходимо вывести эту сумму.

Формат ввода:
N K
A[1] A[2] ... A[N]

Ограничения:
1<=N, K<=100<br> 1<=A[i]<=1000<br> Гарантируется, что "красивых" чисел всегда >= K.

Формат вывода:
Ans – минимальная сумма K "красивых" чисел.

Пример ввода: Пример вывода:18
7 4
3 2 3 6 1 12 6


Информатика (89 баллов) | 22 просмотров
Дан 1 ответ
0 голосов

//PascalABC.NET
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.



image
image
(5.6k баллов)