Крестики-нолики
(Время: 1 сек. Память: 16 Мб Сложность: 61%)
Это интерактивная задача.
«Крестики-нолики» – популярная логическая игра на квадратном поле 3×3 для двух игроков, которые по очереди ставят на свободные клетки знаки (первый ставит «крестики», второй – «нолики»). Выигрывает тот, кто первым поставит свои фигуры в ряд по вертикали, горизонтали или диагонали. Известно, что при выборе оптимальной стратегии обоими игроками игра сводится к ничьей.
Требуется написать программу, которая играет и не проигрывает программе жюри.
Протокол взаимодействия
Сначала на вход программе подается целое число P (1 ≤ P ≤ 2) – номер вашего хода: если P=1, то вы играете «крестиками», в противном случае – «ноликами». Далее идет последовательность обменов ходами вашей программы и программы жюри. Каждый ход описывается парой целых чисел X и Y (1 ≤ X, Y ≤ 3) – номер столбца и строки, куда следует разместить очередной «крестик» или «нолик». При P=2 после чтения значения P следует считывать первый ход программы жюри. Всего за игру первый игрок совершает 5 ходов, а второй – 4. Таким образом, первый игрок выполняет последний ход. В конце игры (когда вы сделаете последний свой ход) ваша программа должна немедленно завершиться.
Гарантируется, что программа жюри не проигрывает и придерживается оптимальной стратегии. Также гарантируется, что в каждом отдельном тесте при одинаковой последовательности ваших действий, программа жюри будет также повторять свою последовательность ходов.
Примеры
№ | стандартный ввод | стандартный вывод | пояснение |
1 | 1
3 1
3 2
1 1
2 3
| 2 2
1 2
3 3
2 1
1 3
| OXO
XXO
XOX
|
2 | 2
2 2
2 3
3 1
1 2
3 3
| 1 1
2 1
1 3
3 2
| OOX
XXO
OXX
|
Система оценки
Решения, работающие только для P = 1, будут оцениваться в 25 баллов.
Примечание
Для корректной работы программы после каждой операции вывода данных выводите перевод строки, а также очищайте буфер вывода. Очистка буфера вывода производится следующим образом:
- В языке Pascal: flush(output)
- В С/С++: fflush(stdout) или cout.flush()
- В Java: System.out.flush()
- В Python: sys.stdout.flush() из библиотеки sys
- В C# и Basic: Console.Out.Flush()
Для отправки решения задачи необходимо зарегистрироваться и авторизоваться!
|