Pascal. Задача 8-35

Системный администратор раз в неделю создаёт архив пользовательских файлов. Однако объём диска, куда он помещает архив, может быть меньше, чем суммарный объём архивируемых файлов. Администратор хочет сэкономить место на диске для хранения архивов и для этого выбирает 4 наибольших по объему архивов и удаляет их, тем самым сэкономив место на диске. Известно, какой объём занимает файл каждого пользователя. По заданной информации об объёме файлов пользователей, определите сэкономленное администратором место.

Входные данные. В первой строке входного файла находится число N — количество пользователей (натуральное число большее 10, не превышающее 1000). В следующих N строках находятся значения объёмов файлов каждого пользователя (все числа натуральные, не превышающие 100), каждое в отдельной строке. Запишите в ответе одно число: сэкономленное администратором место.

Для решения использовать файл test-8-35-1.txt

Ответ
220
Решение
var
  f : text;
  N, i, j, tmp : integer;
  a : array[1..1000] of integer;
  str : string;
  sorted : boolean;
begin
  Assign(f, 'C:\PABCWork.NET\test-8-35-1.txt');
  Reset(f);
  Readln(f, N);
  for i := 1 to N do
    Readln(f, a[i]);
  Close(f);
  // Сортировка по возрастанию методом пузырька
  for i := 1 to N do begin
    sorted := true;
    for j := 1 to N - i do
      if a[j] > a[j + 1] then begin
        tmp := a[j + 1];
        a[j + 1] := a[j];
        a[j] := tmp;
        sorted := false;
      end;
    if sorted then break;
  end;
  // Сумма последних четырех элементов
  tmp := 0;
  for i := N downto N - 3 do begin
    tmp := tmp + a[i];
  end;
  Writeln(tmp);
end.