Забавный конфуз - 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 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. |