Решение показано в прилагаемом файле.
Ответ: 77
//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.
4.7 ГБайт = 4.7*1024 = 4812,8 МБайт
4812,8/ 650 = 7,4 (примерно)
Значит нужно 8 дисков