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

Змейка

Змейка

"Змейка" - это аркадная компьютерная игра, которая ведется на квадратном поле \textbf{N}x\textbf{N}, разбитом на квадраты \textbf{1}x\textbf{1}. Строки поля пронумерованы от \textbf{1} до \textbf{N} сверху вниз, а столбцы - от \textbf{1} до \textbf{N} слева направо. Каждой клетке поля можно поставить в соответствие ее координаты (\textbf{r}, \textbf{c}), где \textbf{r} - это номер строки, в которой она находится, а \textbf{c} - номер столбца. В любой момент игры змейка занимает некоторую последовательность квадратов поля такую, что два соседних в этой последовательности квадрата имеют общую сторону. В первом квадрате последовательности находится хвост змейки, а в последнем - ее голова. Изначально и хвост, и голова змейки находятся в клетке с координатами (\textbf{1}, \textbf{1}), а в каждой из остальных клеток есть или ягодка, или грибок. За один ход змейка может переместить голову в одном из \textbf{4}-х направлений - вверх, влево, вправо, вниз. Если соседнего квадрата в направлении хода не существует или, если в этом квадрате находится грибок или сама змейка, то она погибает и игра заканчивается. Если же в этом квадрате находится ягодка, то змейка съедает ее и увеличивает за счет этого свою длину на один квадрат. Пусть, к примеру, в некоторый момент игры змейка расположена следующим образом: \includegraphics{https://static.e-olymp.com/content/1e/1e45592fcfd9be6d94b6cb9acf10b4e08ee1a71e.jpg} \includegraphics{file:///D:/2010-2011/ttb/%D0%97%D0%BC%D0%B5%D0%B9%D0%BA%D0%B0/statement-23_files/1_itdl.gif} Тогда при ходе вверх и вниз змейка погибает, так как попадает в клетку с собственным туловищем. При ходе вправо змейка также погибает, так как попадает в клетку с грибком. Единственный ход, при котором змейка не погибает - влево. После этого хода она будет располагаться следующим образом: \includegraphics{https://static.e-olymp.com/content/c9/c9303813e8619d64c34f5c014f9886ab41c0c03e.jpg} \includegraphics{file:///D:/2010-2011/ttb/%D0%97%D0%BC%D0%B5%D0%B9%D0%BA%D0%B0/statement-23_files/2_ozno.gif} Цель игрока - управлять змейкой так, чтобы, перед тем как погибнуть, она набрала как можно большую длину. Школьнику Васе играть в "Змейку" самому неинтересно, поэтому он разработал алгоритм управления змейкой. Первый ход, согласно алгоритму Васи, змейка делает вправо, если справа от нее нет грибка, и вниз - в противном случае (если снизу есть грибок, то после первого хода змейка погибает). Далее, в любой момент игры, змейка помнит направление, в котором она делала предыдущий ход, и на следующем ходу пытается сделать ход в том же направлении. Если это приводит к немедленной смерти, то змейка изменяет направление движения, поворачивая на \textbf{90} градусов по часовой стрелке, и делает ход в новом направлении (даже если это приводит к ее немедленной гибели). Пусть к примеру, поле для игры в "Змейку" изначально выглядит следующим образом: \includegraphics{https://static.e-olymp.com/content/3b/3b0e32d8a743c0a8367473009701dad91da77ffc.jpg} \includegraphics{file:///D:/2010-2011/ttb/%D0%97%D0%BC%D0%B5%D0%B9%D0%BA%D0%B0/statement-23_files/3_ljnq.gif} Тогда змейка, двигаясь по алгоритму Васи, непосредственно перед тем, как погибнуть, расположится так, как показано на рисунке: \includegraphics{https://static.e-olymp.com/content/58/5859956698baffe0221c3434a6fc53663286d368.jpg} \includegraphics{file:///D:/2010-2011/ttb/%D0%97%D0%BC%D0%B5%D0%B9%D0%BA%D0%B0/statement-23_files/4_jlqx.gif} Вася понимает, что разработанный им алгоритм - не оптимальный. Например, на рисунке выше змейка вполне могла бы дальше пойти вправо и увеличить свою длину, а, действуя по Васиному алгоритму, она делает ход влево и погибает. Тем не менее, Васе кажется, что его алгоритм - очень хороший и позволяет змейке достичь очень большой длины. Помогите Васе проверить эту гипотезу, написав программу, моделирующую работу его алгоритма. Программа получает на вход размер поля \textbf{N} и расположение всех грибков, и находит, сколько квадратов будет занимать змейка непосредственно перед тем, как погибнуть, если она будет двигаться по алгоритму Васи. \InputFile В первой строке задано целое число \textbf{N} (\textbf{2} ≤ \textbf{N} ≤ \textbf{40000}) - размер поля. Во второй - количество грибков \textbf{K} (\textbf{0} ≤ \textbf{K} ≤ \textbf{100}), последующие \textbf{K} строк содержат координаты \textbf{X} грибков, далее следует опять число \textbf{K} и в последних \textbf{K} строках - координаты \textbf{Y} соответствующих грибков. Гарантируется, что никаких два грибка не расположены в одной клетке и в клетке (\textbf{1}, \textbf{1}) нет грибка. \OutputFile Единственное целое число, равное количеству квадратов, занимаемых змейкой непосредственно перед ходом, на котором она погибнет, в предположении, что змейка двигается согласно алгоритму Васи.
Лимит времени 1 секунда
Лимит использования памяти 64 MiB
Входные данные #1
8
5
2
3
4
6
7
5
6
4
5
2
8
Выходные данные #1
25
Автор Иван Метельский