Advertisement
am1x

p26_v3u.pas

Aug 10th, 2021
1,256
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pascal 2.75 KB | None | 0 0
  1. {В текстовом файле записан набор натуральных чисел, не превышающих 10^9.
  2. Гарантируется, что все числа различны. Необходимо определить, сколько в наборе
  3. таких пар чётных чисел, что их среднее арифметическое тоже присутствует в файле,
  4. и чему равно наибольшее из средних арифметических таких пар. Первая строка
  5. входного файла содержит целое число N — общее количество чисел в наборе.
  6. Каждая из следующих N строк содержит одно число.
  7. В ответе запишите два целых числа:
  8. сначала количество пар, затем наибольшее среднее арифметическое.}
  9.  
  10. // Вывод : 15 и 976339247
  11. program p27;
  12. uses SysUtils, DateUtils;
  13.  
  14. const NM = 5000;
  15. type TArray = array[1..NM] of integer;
  16.  
  17.  
  18. var
  19.     n, k, t, s: integer;
  20.     ar : TArray;
  21.  
  22.     count_pair : integer;
  23.     max_average : integer;
  24.     average : integer;
  25.  
  26.     //Для замера времени выполнения
  27.     t0, t1 : TDateTime;
  28.     time_execution : real;
  29.  
  30. procedure input_data(var ar: TArray; var n: integer);
  31. var
  32.     k: integer;
  33.     f: text;
  34. begin
  35.     Assign(f, '26.txt');
  36.     Reset(f);
  37.     readln(f, n);
  38.     assert((0 <= n) and (n <= NM));
  39.  
  40.     for k := 1 to n do begin
  41.         readln(f, ar[k]);
  42.         assert ((0 < ar[k]) and (ar[k] <= 1000000000));
  43.     end;
  44.     Close(f);
  45. end;
  46.  
  47.  
  48. // Обычная сортировка
  49. procedure bsort(var ar: TArray; n: integer);
  50. var
  51.     i, j, jmax  : integer;
  52.     t : integer;
  53. begin
  54.     for i := 1 to n do begin
  55.         jmax := n - i;
  56.         for j := 1 to jmax do begin
  57.             if (ar[j] > ar[j + 1]) then begin
  58.                 t := ar[j + 1];
  59.                 ar[j + 1] := ar[j];
  60.                 ar[j] := t;
  61.             end;
  62.         end;
  63.     end;
  64. end;
  65.  
  66.  
  67. begin
  68.     t0 := Now;
  69.     input_data(ar, n);
  70.     bsort(ar, n);
  71.  
  72.     max_average := 0;
  73.     count_pair := 0;
  74.  
  75.     for k := 1 to n do begin
  76.         if (ar[k] mod 2 <> 0) then
  77.             continue;
  78.         s := k + 1;
  79.         for t := k + 1 to n do begin
  80.             if (ar[t] mod 2 <> 0) then
  81.                 continue;
  82.             average := (ar[t] + ar[k]) div 2;
  83.             while (ar[s] < average) do
  84.                 inc(s);
  85.             if (ar[s] = average) then begin
  86.                 inc(count_pair);
  87.                 if (average > max_average) then
  88.                     max_average := average;
  89.             end;
  90.         end;
  91.     end;
  92.  
  93.     t1 := Now;
  94.     time_execution := MillisecondsBetween(t0, t1) * 1e-3;
  95.  
  96.     writeln('N = ', N);
  97.     writeln(' Количество пар из четных чисел, ср.ариф. которых есть в наборе: ', count_pair);
  98.     writeln(' Наибольшее среднее арифметическое: ', max_average);
  99.     writeln;
  100.     writeln('Время выполнения = ', time_execution:8:3, ' сек');
  101. end.
  102.  
  103.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement