Олимпиадный тренинг

Задача . D. Охота за сокровищами


Вы находитесь на острове, который можно представить как таблицу \(n \times m\). Строки таблицы пронумерованы целыми числами от \(1\) до \(n\), а столбцы пронумерованы целыми числами от \(1\) до \(m\). На острове расположено \(k\) сокровищ, \(i\)-е из которых находится в клетке \((r_i, c_i)\).

Изначально вы находитесь в нижней левой клетке острова, в клетке \((1, 1)\). Если вы окажетесь в одной клетке с сокровищем, то вы можете забрать его, не тратя дополнительного времени. За один ход вы можете переместится вверх (из \((r, c)\) в \((r+1, c)\)), налево (из \((r, c)\) в \((r, c-1)\)) или направо (из \((r, c)\) в \((r, c+1)\)). Из-за ловушек вы не можете двигаться вниз.

Однако двигаться вверх тоже небезопасно. Вы можете двигаться вверх, только если вы находитесь в безопасном столбце. Есть \(q\) безопасных столбцов: \(b_1, b_2, \ldots, b_q\). Вы хотите собрать все сокровища как можно быстрее. Выясните минимальное число ходов, за которое это можно сделать.

Входные данные

Первая строка содержит целые числа \(n\), \(m\), \(k\) и \(q\) (\(2 \le n, \, m, \, k, \, q \le 2 \cdot 10^5\), \(q \le m\)) — количество строк, количество столбцов, количество сокровищ на острове и количество безопасных столбцов.

Каждая из \(k\) следующих строк содержит целые числа \(r_i, c_i\), (\(1 \le r_i \le n\), \(1 \le c_i \le m\)) — координаты клеток, в которых расположены сокровища. Все сокровища расположены в различных клетках.

Последняя строка содержит \(q\) различных чисел \(b_1, b_2, \ldots, b_q\) (\(1 \le b_i \le m\)) — номера безопасных столбцов.

Выходные данные

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

Примечание

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

Во втором примере следует идти вверх в первом столбце.

В третьем примере оптимально собрать сокровище в клетке \((1;6)\), затем переместиться вверх в строку \(2\), используя столбец \(6\), затем собрать сокровище в клетке \((2;2)\), подняться в верхний ряд, используя столбец \(1\), и собрать последнее сокровище в клетке \((3;4)\). Всего \(15\) ходов.


Примеры
Входные данныеВыходные данные
1 3 3 3 2
1 1
2 1
3 1
2 3
6
2 3 5 3 2
1 2
2 3
3 1
1 5
8
3 3 6 3 2
1 6
2 2
3 4
1 6
15

time 3000 ms
memory 256 Mb
Правила оформления программ и список ошибок при автоматической проверке задач

Статистика успешных решений по компиляторам
 Кол-во
С++ Mingw-w645
Комментарий учителя