Описание

Ограничение по времени: 500 ms
Ограничение по памяти: 256 Mb

Ответы на вопросы

Задача: Package Pickup

**Замечание: время на тест в этой задаче 4 сек, в два раза больше, чем по умолчанию.**

Фермер Джон распределил коров и пакеты по странной схеме на числовой оси, используя следующий процесс:

  • ФД выбрал число \(M\) (\(1 \le M \le 10^{18}\)).
  • ФД выбрал \(N\) (\(1 \le N \le 2 \cdot 10^4)\) интервалов \([L_i, R_i]\) чтобы распределить коров (\(1 \le L_i \le R_i \le 10^{18}\)). Затем он разместил коров в позициях \(L_i, L_i + M, L_i + 2M, \ldots, R_i\). Гарантируется, что \(R_i - L_i\) кратно \(M\).
  • ФД выбирает \(P\) (\(1 \le P \le 2 \cdot 10^4)\) интервалов \([A_i, B_i]\) чтоб распределить пакеты (\(1 \le A_i \le B_i \le 10^{18}\)). Затем он размещает пакеты в позициях \(A_i, A_i + M, A_i + 2M, \ldots, B_i\). Гарантируется, что \(B_i - A_i\) кратно \(M\).
Поле распределения коров и пакетов, ФД хочет увидеть сколько времени требуется коровам, чтобы забрать пакеты. Каждую секунду ФД может дать команду одной корове двинуться на одну единицу влево или вправо от текущей позиции. Если корова попадает в позицию, где размещён пакет, она его забирает. ФД хочет узнать минимальное количество секунд, которое потребуется коровам чтобы собрать все пакеты.

ФОРМАТ ВВОДА (с клавиатуры / stdin):

Первая строка содержит \(M\), \(N\), \(P\).

Каждая из последующих \(N\) строк содержит два целых числа \(L_i\) и \(R_i\).

Каждая из последующих \(P\) строк содержит два целых числа \(A_i\) и \(B_i\).

ФОРМАТ ВЫВОДА (на экран / stdout):

Выведите одно целое число, представляющее минимальное количество времени, которое потребуется коровам, собрать все пакеты, если в каждую секунду он может передвинуть одну любую корову влево или вправо на единицу.


Прикрепите файл с исходным кодом программы:
     
или введите исходный код на языке:


Правила оформления программ и список ошибок при автоматической проверке задач
           

Ваш ответ:

Загруженные файлы:


Нет

Примечание учителя: