Забавный конфуз - 2 уровень

Условие:
Пусть A — массив, состоящий из N элементов A1,...,AN. Обозначим его максимальное и минимальное значение как max(A) и min(A) соответственно. Вычислим сумму элементов S, S=A1+A2+...+AN. Заменим каждый элемент массива на разницу S и этого элемента: Ai:=S-Ai, 1<=i<=N. Такое преобразование массива A назовем операцией Confuse.
Напишите программу CONFUSE, которая по массиву B, полученному в результате K–кратного применения операции Confuse к некоторому массиву A, вычислит разность max(A)-min(A).

Техническое условие:
Первая строка входного файла CONFUSE.DAT содержит целые числа N и K, где N — количество элементов массива B (2<=N<=10000), а K — количество применений операции Confuse к начальному массиву A, 1<=K<=100. Вторая строка файла содержит N элементов массива B. Элементы массива B — целые числа, принадлежащие диапазону от -2 000 000 000 до 2 000 000 000.
Единственная строка выходного файла CONFUSE.SOL должна содержать целое число, которое есть разностью max(A) и min(A).


Пример файлов входных и выходных данных:

Confuse.dat

Confuse.sol

4 2
45 52 47 46

7

 

Авторское решение задачи:

{$N+,G+}
program Confuse;
var
  fr, fw: text;
  bmax, bmin, bi, n, k: longint;
  i: integer;
  answer: comp;

begin
  assign(fr, 'confuse.dat');
  reset(fr);
  assign(fw, 'confuse.sol');
  rewrite(fw);

  readln(fr, n, k);
  read(fr, bmin);
  bmax := bmin;
  for i:=2 to n do
  begin
    read(fr, bi);
    if (bi < bmin) then
      bmin := bi;
    if (bi > bmax) then
      bmax := bi;
  end;
  answer := bmax;
  answer := answer - bmin;
  writeln(fw, answer:0:0);
  close(fw);
  close(fr);
end.