Pascal. Задача 8-42

Дед Мороз и Снегурочка приходят на детские утренники с мешком конфет. Дед Мороз делит конфеты поровну между всеми присутствующими детьми (детей на утреннике никогда не бывает больше 100), а оставшиеся конфеты отдает Снегурочке. Снегурочка каждый раз записывает в блокнот количество полученных конфет. Если конфеты разделились между всеми детьми без остатка, Снегурочка ничего не получает и ничего не записывает. Когда утренники закончились, Деду Морозу стало интересно, какое число чаще всего записывала Снегурочка. Дед Мороз и Снегурочка — волшебные, поэтому число утренников N, на которых они побывали, может быть очень большим. Вывести число, которое Снегурочка записывала чаще всего.

Входные данные: Дан входной файл, в первой строке которого задается одно целое положительное число — количество утренников N. Каждая из следующих N строк содержит два целых числа: сначала D — количество пришедших на очередной утренник детей, а затем K — количество конфет в мешке Деда Мороза на этом утреннике. Гарантируется выполнение следующих соотношений:
1 ≤ N ≤ 100000
1 ≤ D ≤ 100 (для каждого D)
D ≤ K ≤ 1000 (для каждой пары D, K)

Описание выходных данных: Программа должна вывести одно число — то, которое Снегурочка записывала чаще всего. Если несколько чисел записывались одинаково часто, надо вывести большее из них. Если Снегурочка ни разу ничего не записывала, надо вывести ноль.

Пример входных данных:
7
10 58
15 315
20 408
100 1000
32 63
32 63
11 121

Пример выходных данных для приведённого выше примера входных данных: 31

Ответ
7
Решение
const
  m = 100;
var
  N, i, p, D, K : integer;
  a : array[1..m-1] of integer;
  f : text;
begin
  for i := 1 to m - 1 do a[i] := 0;
  Assign(f,'C:\PABCWork.NET\test-8-42-2.txt');
  Reset(f);
  Readln(f, N);
  for i := 1 to N do begin
    Readln(f, D, K);
    p := K mod D;
    if p > 0 then begin
      Inc(a[p]);
    end;
  end;
  Close(f);
  D := 0;
  K := 0;
  for i := 1 to m - 1 do begin
    if D <= a[i] then begin
      D := a[i];
      K := i;
    end;
  end;
  Writeln(K);
end.