Угадай перестановку
(Время: 1 сек. Память: 32 Мб Сложность: 30%)
Вы угадали: это интерактивная задача.
Теперь угадайте перестановку p, которая имеет размер n. Вы можете спросить не более n раз чему равна сумма двух элементов (разумеется, на различных позициях).
Перестановкой размера n называется массив из n целых различных чисел pi, таких, что 1 ≤ pi ≤ n.
Протокол взаимодействия
Первая строка ввода содержит целое число n – размер перестановки (3 ≤ n ≤ 333).
Далее вы можете в отдельной строке задать вопрос в виде «? i j», где 1 ≤ i,j ≤ n и i≠j, а в ответ получить pi+pj.
Вы должны задать не более чем n вопросов, после чего вывести ответ и завершить работу программы.
Если вы готовы предоставить p, то в отдельной строке выведите «!», а следом числа p1, p2, ⋯, pn.
Пример
№ | стандартный ввод | стандартный вывод |
1 | 5 4 6 5 5 7 |
? 1 2
? 3 4
? 1 4
? 2 3
? 4 5
! 3 1 4 2 5 |
Примечание
Для корректной работы программы после каждой операции вывода данных выводите перевод строки, а также очищайте буфер вывода. Очистка буфера вывода производится следующим образом:
- В языке Pascal: flush(output)
- В С/С++: fflush(stdout) или cout.flush()
- В Java: System.out.flush()
- В Python: sys.stdout.flush() из библиотеки sys
- В C# и Basic: Console.Out.Flush()
Для отправки решения задачи необходимо зарегистрироваться и авторизоваться!
|