Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- {В текстовом файле записан набор натуральных чисел, не превышающих 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.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement