eolymp
bolt
Попробуйте наш новый интерфейс для отправки задач
Задачи

Сетка

Сетка

На плоскости задана бесконечная сетка из вертикальных и горизонтальных прямых. Эти прямые заданы уравнениями \{\textbf{X} = \textbf{i}·\textbf{K}\} и \{\textbf{Y} = \textbf{j}·\textbf{K}\} для любых целых чисел \textbf{i} и \textbf{j}. Также задано \textbf{N} точек. Для конкретной точки мы говорим, что она принадлежит сетке, если эта точка принадлежит хотя бы одной из прямых, образующих сетку. Есть возможность двигать сетку параллельно осям координат. Перенос сетки на вектор (\textbf{dx}, \textbf{dy}) означает, что вместо каждой из прямых \{\textbf{X} = \textbf{i}·\textbf{K}\} возникает прямая \{\textbf{X} = \textbf{i}·\textbf{K} + \textbf{dy}\}, а вместо каждой из прямых \{\textbf{Y} = \textbf{j}·\textbf{K}\} возникает прямая \{\textbf{Y} = \textbf{j·K + dx}\}. Найдите вектор переноса сетки, в результате применения которого ей будет принадлежать наибольшее количество заданных точек. \InputFile Первая строка содержит два целых числа \textbf{N} и \textbf{K}. \textbf{i}-ая из следующих \textbf{N} строк содержит пару чисел \textbf{X_i}, \textbf{Y_i} --- координаты \textbf{i}-ой точки (\textbf{1} ≤ \textbf{N} ≤ \textbf{10^5}, \textbf{2} ≤ \textbf{K} ≤ \textbf{10^9}). Координаты всех точек целые и по абсолютной величине не превосходят \textbf{10^9}. Никакие две точки не совпадают. \OutputFile Выведите максимальное возможное количество одновременно принадлежащих сетке точек из заданного множества.
Лимит времени 2 секунды
Лимит использования памяти 64 MiB
Входные данные #1
6 2
2 0
0 1
2 2
3 3
3 2
4 1
Выходные данные #1
5

Объяснение: Один из возможных векторов переноса сетки в данном примере — (1,0).

Автор Эльдар Богданов
Источник Зимняя школа, Харьков 2011, День 7