Школа программиста

Забыли пароль?
[задачи] [курсы] [олимпиады] [регистрация]
Логин:   Пароль:    
Скрыть меню
О школе
Правила
Олимпиады
Фотоальбом
Гостевая
Форум
Архив олимпиад
Архив задач
Состояние системы
Рейтинг
Курсы
Новичкам
Работа в системе
Курсы ККДП
Дистрибутивы
Статьи
Ссылки


 

Крестики-нолики

(Время: 1 сек. Память: 16 Мб Сложность: 61%)
Крестики-нолики

Это интерактивная задача.

«Крестики-нолики» – популярная логическая игра на квадратном поле 3×3 для двух игроков, которые по очереди ставят на свободные клетки знаки (первый ставит «крестики», второй – «нолики»). Выигрывает тот, кто первым поставит свои фигуры в ряд по вертикали, горизонтали или диагонали. Известно, что при выборе оптимальной стратегии обоими игроками игра сводится к ничьей.

Требуется написать программу, которая играет и не проигрывает программе жюри.

Протокол взаимодействия

Сначала на вход программе подается целое число P (1 ≤ P ≤ 2) – номер вашего хода: если P=1, то вы играете «крестиками», в противном случае – «ноликами». Далее идет последовательность обменов ходами вашей программы и программы жюри. Каждый ход описывается парой целых чисел X и Y (1 ≤ X, Y ≤ 3) – номер столбца и строки, куда следует разместить очередной «крестик» или «нолик». При P=2 после чтения значения P следует считывать первый ход программы жюри. Всего за игру первый игрок совершает 5 ходов, а второй – 4. Таким образом, первый игрок выполняет последний ход. В конце игры (когда вы сделаете последний свой ход) ваша программа должна немедленно завершиться.

Гарантируется, что программа жюри не проигрывает и придерживается оптимальной стратегии. Также гарантируется, что в каждом отдельном тесте при одинаковой последовательности ваших действий, программа жюри будет также повторять свою последовательность ходов.

Примеры

стандартный вводстандартный выводпояснение
11
3 1
3 2
1 1
2 3
 
2 2
1 2
3 3
2 1
1 3
OXO
XXO
XOX
22
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()

Для отправки решения задачи необходимо зарегистрироваться и авторизоваться!

[Обсуждение] [Все попытки] [Лучшие попытки]


 Язык программирования C++
 Решение олимпиадных задач
 Региональные олимпиады
 Книги Фёдора Меньшикова
 ЕГЭ по информатике
 Тренировочные олимпиады
 Введение
 Условный оператор
 Операторы цикла
 Строковые типы данных
 Массивы
 Функции
 Сортировка
 Двумерные массивы
 Рекурсия
 Рекурсия - 1
 Рекурсия - 2
 A. Лесенка
 B. Монетки - 2
 C. Сумма кубов
 D. Произведение Фибоначчи
 E. Шаблон
 F. Робот Гильберта
 G. Магараджа
 H. Шахматная расстановка
 I. Крестики-нолики
 J. Раскопки
 K. Арифметическое выражение

Красноярский краевой Дворец пионеров, (c)2006 - 2025, ИНН 246305493507, E-mail: admin@acmp.ru



Как запустить массовые рассылки в телеграм по своей базе.