Gnirut#6924

Gnirut

1 секунда
64 мегабайти
Дуже складна

Деякі цікаві документи нещодавно були знайдені в архівах ACM. Ці документи містять опис оригінальної версії змагання ACM ICPC, яке відбулося в Блетчлі-Парк, Англія, у році.

У цьому оригінальному конкурсі програми, подані учасниками, виконувалися на спрощеній версії так званої детермінованої машини Тюрінга, з якою, без сумніву, більшість з вас знайомі. У цій спрощеній версії стрічка не є нескінченною. Натомість, комірки стрічки пронумеровані від до 10^3-1 (включно), зліва направо. Також використовується унарний алфавіт, що означає, що перед виконанням програми стрічка буде ініціалізована рядком, що складається з одиниць, після яких йдуть всі нулі, де є числовим значенням вхідних даних, а після виконання вміст стрічки повинен бути одиниць, після яких йдуть всі нулі, де є числовим значенням відповідного виходу. На початку головка стрічки знаходиться на позиції , а стани також пронумеровані, починаючи з , який вважається початковим станом. Машини працюють як зазвичай: для кожного стану машини і кожного біта ( або ) існує не більше одного правила, яке визначає, яким буде наступний стан, якщо символ на позиції головки стрічки є і поточний стан є ; правило також визначає символ, який потрібно записати на поточній позиції, і в якому напрямку повинна рухатися головка. Коли жодне правило не застосовується, машина зупиняється.

На жаль, в архівах були знайдені лише вердикти судді конкурсу, без жодного сліду поданих машин Тюрінга або використаних тестових випадків. Зазначимо, що в цьому оригінальному конкурсі, на відміну від поточного, для кожного тестового випадку був окремий вердикт, а не загальний.

Це відкриття привернуло увагу відомого авантюриста Зафода Біблброкса, який має намір розпочати проект зі створення прикладів машин та вхідних/вихідних "файлів", які могли б спричинити ці вердикти. Не лише всі ваші зусилля змусити його зрозуміти марність такого підприємства зазнали невдачі, але ви також були змушені написати для нього програму, яка генерує такі приклади. Ваша програма повинна отримати серію вердиктів про одну з машин Тюрінга, поданих учасниками, і повернути специфікації машини Тюрінга, а також серію тестових випадків, для яких вердикти є такими, які ви отримали.

Ми вважаємо, що вихід для машини повинен бути MLE (перевищено обмеження пам'яті), якщо машина намагається отримати доступ до будь-якої комірки за межами зазначеного діапазону стрічки; TLE (перевищено обмеження часу), якщо вона працює принаймні 10^4 ітерацій без зупинки або виклику помилки MLE; WA (неправильна відповідь), якщо машина зупиняється, але повертає неправильний результат, і AC (прийнято), якщо машина зупиняється і повертає очікуваний результат.

Вхідні дані

Вхід складається з певної кількості (не більше ) серій вердиктів. Перша строка для кожної містить 1 \le N \le 100, кількість вердиктів у випадку. Наступні рядків містять одне з слів TLE, MLE, WA і AC.

Кінець вводу позначається випадком з N = 0, який не слід обробляти.

Вихідні дані

Для даного тестового випадку для вашої програми ваш вихід повинен відповідати наступному формату:

Перша строка містить 1 \le M \le 1000, кількість правил для машини, і , кількість тестових випадків для машини Тюрінга.

Далі йдуть рядків, кожен з яких містить правило у форматі q_prev c_prev q_next c_next mov. q_prev — це стан машини перед застосуванням правила, c_prev — це вміст ( або ) стрічки на поточній позиції перед застосуванням правила, q_next — це стан машини після застосування правила, c_next — це вміст позиції після застосування правила, а mov — це напрямок, у якому головка стрічки рухається на один крок після застосування правила ("L", якщо вона рухається вліво, і "R", якщо вона рухається вправо). Стани повинні бути цілими числами від до , включно. Машина Тюрінга повинна бути детермінованою, тобто має бути не більше одного переходу з будь-якої пари (q_prev, c_prev), і не повинна повторюватися у вашому виході. Після цього йдуть рядків, кожен з яких містить два числа, розділені пробілом, і , 1 \le X, Y \le 1000. — це значення вхідних даних для програми, а — це значення очікуваного виходу.

Примітка: Хоча це рекомендований синтаксис, інші комбінації нових рядків і пробільних символів також можуть бути прийняті.

Приклади

Приклад 1

Loading
Loading