printЗанятие 18

printB. Рога и копыта

Ограничения: время – 3s/6s, память – 32MiB Ввод: input.txt или стандартный ввод Вывод: output.txt или стандартный вывод copy
Послать решение Blockly Посылки Темы Где Обсудить (0)

В конторе "Рога и копыта", симулируя активную деятельность по заготовке рогов и копыт, очень любили играть в следующую разновидность "Быков и коров". Два игрока загадывают по одному четырехзначному числу из цифр от 1 до 7. Пусть первый игрок задумал число 3321. Другой игрок делает попытку угадать это число, называя произвольное число, например 1223, и получает ответ о числе точных и неточных попаданий, в данном случае "1 рог и 2 копыта". Рог – это одинаковые цифры в одинаковых разрядах, копыто – одинаковые цифры в разных разрядах, каждый разряд учитывается только один раз.
Затем пытается угадать число первый игрок, и так далее, пока один из игроков не получит ответ "4 рога". Этот игрок становится победителем.
Чемпионом конторы, без сомнения, был великий комбинатор. Шура и Паниковский предложили Вам на выбор любую из половинок "золотой гири" за программу, которая поможет им выиграть. Программа должна:
  • проанализировать числа-попытки игрока и полученные ответы;
  • сообщить минимальное количество оставшихся попыток в самом неблагоприятном случае;
  • предложить число, которое следует называть следующим для достижения указанного минимума ходов.
Т.е. если следовать советам программы, потребуется не более указанного количества ходов и не существует ходов, которые приводили бы к гарантированному выигрышу за меньшее количество ходов.
Во входном файле содержится в первой строке количество попыток `T` (`0\ ≤\ T\ ≤\ 10`), которое было сделано игроком. В последующих `T` строках содержится число-попытка `N` (от 1111 до 7777) и количество обнаруженных рогов `R` (`0\ ≤\ R\ ≤\ 3`) и копыт `K` (`0\ ≤\ K\ ≤\ 4`) в попытке (т.е. ответ противника; выполняется условие `K+R\ ≤\ 4`) через один пробел.
В выходной файл вывести минимальное число оставшихся попыток и рекомендуемое четырехзначное число-попытку через один пробел. Если ответам противника не соответствует ни одно число, вывести строчку с числом 0.

Пример ввода

6
7753 0 1
2374 0 2
6264 0 1
3323 1 0
2775 0 0
5212 1 0

Пример вывода

1 3411
Примечание: Количество попыток 1 означает, что на рекомендуемое число-попытку последует ответ "4 рога".
loading