Codeforces Round 497 (Div. 1) |
---|
Закончено |
Это интерактивная задача.
Вася и Витя играют в игру. Вася загадал два числа $$$a$$$ и $$$b$$$ от $$$1$$$ до $$$n$$$, а Витя пытается их отгадать. Каждый раунд он говорит Васе два числа $$$x$$$ и $$$y$$$ от $$$1$$$ до $$$n$$$. Если и $$$x=a$$$, и $$$y=b$$$, то Витя побеждает. Иначе Вася должен сказать одну из трёх фраз:
Вася не может соврать, но если несколько фраз правдивы, он может выбрать любую из них. Например, если Вася загадал числа $$$2$$$ и $$$4$$$, то на запрос $$$(3, 4)$$$ он ответит фразой $$$3$$$, а на запрос $$$(1, 5)$$$ он может ответит фразой $$$1$$$ или фразой $$$3$$$.
Помогите Вите выиграть не более чем за $$$600$$$ раундов.
Первая строка содержит целое число $$$n$$$ ($$$1 \leq n \leq 10^{18}$$$) — ограничение на числа.
Сначала нужно считать число $$$n$$$, после чего можно задавать запросы.
Чтобы задать запрос, выведите два целых числа $$$x$$$ и $$$y$$$ ($$$1 \leq x, y \leq n$$$), затем выполните операцию flush.
После каждого запроса считайте одно целое число $$$ans$$$ ($$$0 \leq ans \leq 3$$$).
Если $$$ans > 0$$$, то это номер фразы, которую сказал Вася.
Если $$$ans = 0$$$, это означает, что вы выиграли, и ваша программа должна завершиться.
Если вы сделаете более $$$600$$$ запросов или сделаете неправильный запрос, вы получите Wrong Answer.
Ваше решение получит вердикт Idleness Limit Exceeded, если вы не будете ничего выводить или забудете сделать операцию flush после вывода запроса.
Чтобы выполнить операцию flush, сразу после вывода запроса и перевода строки нужно сделать:
Формат взломов
Для взломов необходимо использовать следующий формат:
В первой строке выведите целое число $$$n$$$ ($$$1 \leq n \leq 10^{18}$$$) — ограничение на числа.
Во второй строке выведите два целых числа $$$a$$$ и $$$b$$$ ($$$1 \leq a, b \leq n$$$) — числа, которые загадал Вася.
В третьей строке выведите целое число $$$m$$$ ($$$1 \leq m \leq 10^5$$$) — число инструкций для интерактора.
В следующих $$$m$$$ строках выведите по пять целых чисел: $$$x_i$$$, $$$y_i$$$, $$$r^{12}_i$$$, $$$r^{13}_i$$$ и $$$r^{23}_i$$$ ($$$1 \leq x_i, y_i \leq n$$$), где $$$r^{ST}_i$$$ равно либо цифре $$$S$$$, либо цифре $$$T$$$.
При ответе на запрос $$$x\,\, y$$$, интерактор найдёт целое число $$$i$$$ от $$$1$$$ до $$$n$$$ с минимальным значением $$$|x-x_i| + |y-y_i|$$$. Если таких несколько, то выбирается наименьшее $$$i$$$. Затем интерактор отвечает, но если есть две фразы $$$S$$$ и $$$T$$$, которые можно ответить, то выбирается $$$r^{ST}_i$$$.
Например, файл, задающий тест из примера, такой:
5
2 4
2
2 5 1 1 2
4 1 2 3 3
5
3
3
2
1
0
4 3
3 4
3 3
1 5
2 4
Разберём пример. Загаданы числа $$$2$$$ и $$$4$$$. Интерактору даны две инструкции.
На запрос $$$(4, 3)$$$ можно ответить фразой $$$2$$$ или фразой $$$3$$$. Из двух инструкций выбирается вторая, поэтому интерактор выдаёт $$$a^{23}_2=3$$$.
На запрос $$$(3, 4)$$$ можно ответить только фразой $$$3$$$.
На запрос $$$(3, 3)$$$ можно ответить фразой $$$2$$$ или фразой $$$3$$$. Из двух инструкций выбирается первая (так как в случае равных значений выбирается инструкция с меньшим номером), поэтому интерактор выдаёт $$$a^{23}_1=2$$$.
На запрос $$$(1, 5)$$$ можно ответить фразой $$$1$$$ или фразой $$$3$$$. Из двух инструкций выбирается первая, поэтому интерактор выдаёт $$$a^{13}_1=1$$$.
В пятом запросе $$$(2, 4)$$$ названы загаданные числа, игрок победил.
Название |
---|