Змейка
시간 제한2초메모리 제한1024 MB
최대 100,000번의 이동으로 뱀이 자기 몸이나 벽에 부딪히지 않으면서 n x m 격자의 모든 칸을 채우는 경로를 찾는 문제다.
문제
Роясь в одном из сундуков у себя дома, Карыч нашел старый кнопочный телефон. На этом телефоне есть всего одна игра, зато какая! Змейка! Раньше Карыч много играл в нее, пока, например, ехал в поезде или стоял в очереди.
Игра происходит на клетчатом поле . Поле не является зацикленным ни по вертикали, ни по горизонтали. То есть, если змейка врежется в границу поля, игра закончится проигрышем. Строки поля пронумерованы от до сверху вниз, а столбцы --- от до слева направо.
В любой момент времени змейка представляет из себя последовательность клеток, в которой каждые две последовательные клетки являются соседними по стороне. Каждая клетка встречается в последовательности не более одного раза. Первая клетка последовательности называется головой змейки, а последняя --- хвостом. Также, одна из клеток поля, не принадлежащих змейке, содержит яблоко.
На каждом ходу игрок должен выбрать одно из четырех направлений движения: <<вверх>>, <<вниз>>, <<влево>> или <<вправо>>. После этого, игра находит соседнюю с головой змейки клетку в выбранном игроком направлении. Назовем её .
- Если в выбранном направлении нет клетки, то есть игрок сходил за границу поля, игра заканчивается.
- Иначе, если в находится яблоко, змейка его съедает, её длина увеличивается на , и клетка добавляется в начало последовательности клеток, представляющих змейку.
- Иначе, сначала из последовательности клеток удаляется последняя (хвост). Затем, если клетка все еще встречается в последовательности, значит змейка врезалась сама в себя, поэтому игра заканчивается. Иначе, клетка дописывается в начало последовательности.
Обратите внимание, что из-за того, что сначала из последовательности удаляется старая клетка хвоста, а только затем добавляется новая клетка головы, после хода клетка головы может занять клетку, в которой до этого хода находился хвост.
В начале игры змейка имеет длину .
Карыч слышал, что если выиграть в этой игре, то есть заполнить змейкой все клетки поля, то игра покажет мультик. Но ему никогда не удавалось этого достичь. Помогите ему! Вы должны сделать не более ходов.