Codeforces Beta Round 96 (Div. 1) |
---|
Закончено |
Piet — один из самых известных визуальных эзотерических языков программирования. Программы на нем составляются из разноцветных блоков пикселей и интерпретируются по довольно сложным правилам. В этой задаче мы рассмотрим подмножество языка Piet с упрощенными правилами.
Программа будет прямоугольным изображением, состоящим из цветных и черных пикселей. Цвет каждого пикселя будет задаваться целым числом от 0 до 9. Цвет 0 соответствует черному цвету. Блок пикселей определяется как прямоугольник, состоящий из пикселей одного цвета (не черного). Гарантируется, что все связные множества цветных пикселей будут образовывать прямоугольные блоки. Группы черных пикселей могут иметь произвольную форму.
В процессе интерпретации программы по ней двигается счетчик инструкций, состоящий из трех частей:
Изначально BP указывает на блок, которому принадлежит верхний левый пиксель программы, DP указывает вправо, а CP — влево относительно DP (см. оранжевый квадрат на рисунке ниже).
Один шаг изменения состояния счетчика происходит следующим образом. Для текущего блока находится его край в направлении DP. Из всех пикселей края выбирается крайний в направлении CP. Затем BP пытается переместиться из этого пикселя в соседний в направлении DP. Если соседний пиксель принадлежит цветному блоку (цвета, отличного от 0), этот блок становится текущим, а два других указателя сохраняют свои значения. Если же соседний пиксель имеет черный цвет (0) или находится за пределами программы, текущий блок остается прежним, а меняются направления двух других указателей следующим образом. Если CP указывал влево, теперь он указывает вправо, а DP не меняется. Если CP указывал вправо, то теперь он указывает влево, а DP поворачивается на 90 градусов по часовой стрелке.
Таким образом, текущий блок никогда не будет черного цвета. Гарантируется, что верхний левый блок программы не будет черным.
Вам дана программа на Piet. Определите, какой блок программы будет текущим через n шагов.
В первой строке входных данных содержится два целых числа m (1 ≤ m ≤ 50) и n (1 ≤ n ≤ 5·107). Следующие m строк содержат строки программы. Все строки программы имеют одинаковую длину от 1 до 50 и состоят из символов 0-9. Первый символ первой строки будет не равен 0.
Выведите цвет блока, который будет текущим через n шагов интерпретации программы.
2 10
12
43
1
3 12
1423
6624
6625
6
5 9
10345
23456
34567
45678
56789
5
В первом примере счетчик инструкций изменяется следующим образом. После первого шага блок 2 становится текущим блоком и остается им еще два шага. После шага 4 текущим становится блок 3, после шага 7 — блок 4, и, наконец, после шага 10 указатель текущего блока возвращается в блок 1.
Последовательность состояний счетчика инструкций изображена на рисунке: стрелки обходятся по часовой стрелке, основная стрелка соответствует DP, боковая — CP.
Название |
---|