{В текстовом файле записан набор натуральных чисел, не превышающих 10^9.
Гарантируется, что все числа различны. Необходимо определить, сколько в наборе
таких пар чётных чисел, что их среднее арифметическое тоже присутствует в файле,
и чему равно наибольшее из средних арифметических таких пар. Первая строка
входного файла содержит целое число N — общее количество чисел в наборе.
Каждая из следующих N строк содержит одно число.
В ответе запишите два целых числа:
сначала количество пар, затем наибольшее среднее арифметическое.}
// Вывод : 15 и 976339247
program p27;
uses SysUtils, DateUtils;
const NM = 5000;
type TArray = array[1..NM] of integer;
var
n, k, t, s: integer;
ar : TArray;
count_pair : integer;
max_average : integer;
average : integer;
//Для замера времени выполнения
t0, t1 : TDateTime;
time_execution : real;
procedure input_data(var ar: TArray; var n: integer);
var
k: integer;
f: text;
begin
Assign(f, '26.txt');
Reset(f);
readln(f, n);
assert((0 <= n) and (n <= NM));
for k := 1 to n do begin
readln(f, ar[k]);
assert ((0 < ar[k]) and (ar[k] <= 1000000000));
end;
Close(f);
end;
// Обычная сортировка
procedure bsort(var ar: TArray; n: integer);
var
i, j, jmax : integer;
t : integer;
begin
for i := 1 to n do begin
jmax := n - i;
for j := 1 to jmax do begin
if (ar[j] > ar[j + 1]) then begin
t := ar[j + 1];
ar[j + 1] := ar[j];
ar[j] := t;
end;
end;
end;
end;
begin
t0 := Now;
input_data(ar, n);
bsort(ar, n);
max_average := 0;
count_pair := 0;
for k := 1 to n do begin
if (ar[k] mod 2 <> 0) then
continue;
s := k + 1;
for t := k + 1 to n do begin
if (ar[t] mod 2 <> 0) then
continue;
average := (ar[t] + ar[k]) div 2;
while (ar[s] < average) do
inc(s);
if (ar[s] = average) then begin
inc(count_pair);
if (average > max_average) then
max_average := average;
end;
end;
end;
t1 := Now;
time_execution := MillisecondsBetween(t0, t1) * 1e-3;
writeln('N = ', N);
writeln(' Количество пар из четных чисел, ср.ариф. которых есть в наборе: ', count_pair);
writeln(' Наибольшее среднее арифметическое: ', max_average);
writeln;
writeln('Время выполнения = ', time_execution:8:3, ' сек');
end.
Comments
0 B
|👍
/👎
0 B
|👍
/👎