Второй открытый Зеленоградский турнир 2006

Тетрис AI

В недрах одной известной фирмы, производящей микроэлектронные изделия, готовится к выпуску мобильник со встроенным сетевым тетрисом. Владельцы таких мобильников смогут устраивать дуэли друг с другом, если будут находиться на небольшом расстоянии друг от друга. Передача данных между игроками будет осуществляться по протоколу BlueTouth. Однаl 2;о иногда поблизости может не оказаться второго такого телефона и игроку придется играть одному. Для этой цели необходимо написать компьютерного игрока повышенной сложности. (Что бы тренировки шли более успешно ^_^).

Правила сетевого тетриса довольно просты (за основу был взят дуэльный тетрис tetrisarena.ru):
Игра ведется на два стакана по правилам обычного тетриса: в стакан непрерывно падают фигурки, которые необходимо располагать так, чтобы они образовали горизонтальные ряды (строки), при полном заполнении одной строки она пропадает. Отличие лишь в том, что если вы убираете одновременно более чем одну строку, то вашему противнику на дно стакан&# 1072; наливаются строчки, каждая клетка которых заполнена с вероятностью 50/50. Количество строк, вливаемых оппоненту на одну меньше количества строк, которые вы убрали. Максимальное количество добавляемых одновременно строк равно трем. Игра заканчивается, когда один из игроков заполнит свой стакан (сам или при помощи противника) настолько, что с&# 1083;едующая фигурка не сможет появиться. Строки вливаются противнику при условии, что вы убрали за раз больше одной строки у себя в стакане. Зависимость простая: убрали две строки у себя - влили одну строку противнику :|, убрали три - влили две :], убрали четыре - влили три :). Больше трех строк одновременно влить невозможно.

В игре существует всего 6 видов фигурок:
Палка (1) - Палка
Буква "г" левая (2) - Буква Г левая
Буква "г" правая (3) - Буква Г правая
Буква "зю" левая (4) - Буква ЗЮ левая
Буква "зю" правая (5) - Буква ЗЮ правая
Кубик (6) - Кубик

Колодец
Ширина стакана: 10
Высота стакана: 20

Задача написать бота, который, начиная с пустого стакана и зная последовательность фигур, играет так, что бы влить максимальное число линий игроку.

З.Ы. В прошлом году тетрису исполнилось 20 лет. =)

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

t – число тестов [t <= 150], затем следуют t тестовых последовательностей.
Каждая тестовая последовательность начинается с числа N равного числу фигурок появляющихся на экране [10 <= N <= 50000]. Затем следуют N чисел, от 1 до 6 - обозначающих одну их фигурок в том положении в котором они показаны на рисунке. (см. номера в скобочках).

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

Для каждого теста необходимо вывести строку case 1 Y если вы хотите решать этот тест и case 1 N если нет. Если вы вывели Y то затем должно следовать ровно N строк на каждой из которых стоит ровно 2 целых числа: A и X - где A угол поворота по часовой стрелке от 0 до 3 включительно (0 - 0, 1 - 90, 2 - 180, 3 - 270). X - горизонтальная координата самого левого кубика фигуры [1 <= x <= 10]. i-ая фигура выходного файла & #1089;оответствует i-ой фигуре входного файла. Если фигура будет выходить за пределы стакана или параметры будут принимать значения отличные от допустимых, а также если в какой то момент верхняя часть опущенной фигуры будет выше отметки 20, то решение получит статус Wrong Answer.

Начисление очков

Количество очков будет определяться количеством снятых линий за все тестовые последовательности. За одну снятую линию ваше решение получит 1 очко, за две одновременно снятые линии - 5 очков за три одновременно снятые линии - 15 очков, за 4 одновременно снятые линии - 30 очков.

Пример

Входные данные:
1
14
3
2
4
5
3
2
1
6
6
1
1
4
1
5

Выходные данные:
case 1 Y
0 1
0 8
0 1
0 8
1 7
3 3
1 5
0 7
0 9
0 1
1 6
1 6
0 1
1 4

Начисление очков:
score = 30 + 1 = 31