Ограничения: время – 5s/10s, память – 256MiB Ввод: интерактивная задача Вывод: интерактивная задача 
Послать решение Blockly Посылки Темы Где Обсудить (0)
После пиратов на берегу острова остались N пустых бутылок и N пробок от них. У всех бутылок горлышко
имеет разный диаметр, и каждая пробка подходит только к одной из бутылок.
Напишите программу, которая установит соответствие между пробками и бутылками.
Первая строка ввода содержит одно целое числа – количество пробок и бутылок N (1 ≤ N ≤ 2000).
Далее программа должна выдавать запросы вида "? i j", где i – номер пробки, а j – номер бутылки (1 ≤ i, j ≤ N).
После вывода запроса программа должна сделать принудительную запись
буфера вывода (в C++ это делает endl, в C нужно использовать fflush(stdout),
в Pascal - flush(output)).
На запрос программа получает строку, содержащую символ '<', если диаметр пробки i меньше диаметра
горлышка бутылки j, или символ '>', если пробка больше, или символ '=', если
пробка точно подходит. Программа может сделать не более 75000 запросов. Когда программа
полностью определит соответствие между бутылками и пробками, она должна вывести строку, содержащую символ '!',
после которого следует последовательность из N чисел от 1 до N, разделенных пробелами, и завершить работу.
i-е число в этой последовательности указывает номер пробки для i-й бутылки.
Вывод программы
? 1 1
? 2 1
! 2 1