D. Государственный переполох
ограничение по времени на тест
2 секунды
ограничение по памяти на тест
512 мегабайт
ввод
стандартный ввод
вывод
стандартный вывод

В стране Байтландии есть ровно $$$n$$$ городов. Страной управляет президент, а в каждом городе сидит некоторое (не обязательно одинаковое, возможно нулевое) количество министров, которое мы назовем размером министерства этого города. В любом отдельно взятом городе министры пронумерованы подряд целыми положительными числами, начиная с $$$1$$$. В подчинении у министра находятся все министры его города с меньшими номерами. Известно, что ни в каком городе не находится более $$$h$$$ министров.

Назовем важностью министра количество его подчиненных, тогда важность $$$i$$$-го министра в любом городе в точности равна $$$i - 1$$$. Чтобы члены правительства не перекладывали обязанности друг на друга, были введены следующие правила:

  1. Ни один министр не знает своей важности.
  2. У каждого министра есть способ связи со всеми министрами такой же важности из других городов, и только с ними.
  3. У президента в каждый момент времени есть способ связи с министрами максимальной важности из каждого города, и только с ними.

Сегодня президент решил выяснить сколько всего в Байтландии министров. Для этого он может делать два типа запросов:

  1. «- i x» — уменьшить размер министерства $$$i$$$-го города на $$$x$$$. В этом случае, если $$$x$$$ больше количества министров в городе, то ничего не происходит, иначе — в отставку уходят $$$x$$$ министров с максимальной важностью. Разумеется, после этого президент получает контакт нового самого важного министра города $$$i$$$, а министры из других городов теряют связь с ушедшими в отставку.
  2. «? i» — спросить у самого важного министра города $$$i$$$, с каким числом министров (включая его самого) у него есть связь. Если же в городе $$$i$$$ не осталось министров, автоответчик сообщит президенту число $$$n$$$. Таким образом, в любом случае, президент узнает в ответ количество городов, в которых на данный момент есть хотя бы столько же министров, сколько и в $$$i$$$-м, включая и сам $$$i$$$-й город.

Помогите президенту определить, сколько в Байтландии министров. Даже если их количество уменьшится в процессе выяснения ответа, президент хочет знать, сколько их было изначально. Разумеется, время президента очень ценно, поэтому он успеет сделать не более $$$q$$$ описанных выше запросов.

Входные данные

Это интерактивная задача. Помимо этого, каждый тест состоит из нескольких наборов данных.

В первой строке ввода дано целое число $$$t$$$ — количество наборов данных в тесте ($$$1 \leqslant t \leqslant 5$$$). Гарантируется, что во всех тестах, кроме примера, $$$t = 5$$$.

Во второй строке ввода через пробел даны целые числа $$$n$$$, $$$h$$$ и $$$q$$$ — количество городов, ограничение на количество министров в городе и ограничение на число запросов ($$$1 \leqslant n \leqslant 5000$$$; $$$1 \leqslant h \leqslant 1\,000\,000$$$; $$$1 \leqslant q \leqslant 24\,000$$$). Эти ограничения являются общими для всех наборов данных текущего теста.

Далее $$$t$$$ раз запускается протокол взаимодействия с интерактором.

Выходные данные

Когда ваша программа готова дать ответ на задачу, следует вывести «! a» (без кавычек), где $$$a$$$ — предполагаемый ответ. После этого программа должна перейти к следующему набору данных или завершиться в соответствии с описанными в следующей секции правилами.

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

Интерактор ожидает от вашей программы запросы трех типов: «- i x», «? i» и «! a», где $$$i$$$, $$$x$$$ и $$$a$$$ — целые числа ($$$1 \leqslant i \leqslant n$$$; $$$0 \leqslant x \leqslant h$$$). После каждого запроса должен следовать перевод строки. При несоблюдении вашей программой формата запросов, ваше решение может получить произвольный вердикт (отличный от OK).

На запрос первого типа интерактор на новой строке отвечает «OK», если операция прошла успешно, и «FAIL», если в $$$i$$$-м городе было меньше $$$x$$$ министров. На запрос второго типа интерактор также на новой строке ответит числом, равным количеству городов, в которых не меньше министров, чем в $$$i$$$-м городе.

Запрос третьего типа означает, что ваша программа готова дать ответ на задачу. Если $$$a$$$ — верный ответ, интерактор выведет «OK» и перейдет к следующему тесту данного мультитеста или завершится, если такого нет. Если ответ неверен, интерактор выводит «-1» и завершается с вердиктом WA.

Ваша программа может вывести не более $$$q$$$ запросов первого или второго типа. Запрос третьего типа (ответ на тест) в этом ограничении не учитывается. При превышении данного ограничения, интерактор выводит «-1» завершается с вердиктом WA.

Обратите внимание, что завершение интерактора означает, что следующие тесты данного мультитеста будут пропущены. Чтобы не получить при этом вердикт TL или IL, при прочтении из ввода значения «-1» ваша программа должна завершить свою работу с нулевым кодом возврата.

Система оценки

В этой задаче 25 тестов, помимо теста из примера. Каждый тест оценивается независимо по указанным ниже критериям и оценивается максимум в 4 балла. Ограничения на входные данные, используемые в каждом тесте, указаны в таблице в конце этой секции.

Баллы за тест начисляются только если на каждом из $$$t$$$ наборов данных был дан верный ответ без превышения лимита запросов. В таком случае количество баллов за каждый набор данных вычисляется по формуле $$$$$$\mathtt{score}\left(c, j\right) = \max\left(1,\: 4 - \left\lfloor\max\left(0, \frac{c - j}{\gamma}\right)\right\rfloor\right)$$$$$$ где $$$c$$$ — количество итераций, сделанное вашей программой, $$$j$$$ — количество итераций, сделанное решением жюри, а $$$\gamma$$$ — отдельно заданный для каждого теста параметр.

В качестве финальной оценки за тест берется минимум из $$$t$$$ оценок его наборов данных.

Номер теста$$$n$$$$$$h$$$$$$q$$$$$$\gamma$$$Дополнительные ограничения
2101024 00012 000-
320100020 0006000-
410002020 0004000-
510001006 0002000 Размеры министерств в разных городах принимают не более $$$50$$$ различных значений
6500050060005-
75000500015 000100-
8180020 00024 000250 Размеры министерств любых двух разных городов отличаются хотя бы на $$$5$$$
910010001000300-
105001 000 00010 0002500-
11300800 0004000600 Среднее геометрическое размеров министерств не превосходит $$$20$$$
123501 000 0005000700 Среднее геометрическое размеров министерств не превосходит $$$35$$$
131002003801-
14100500070010-
152000500 00010 000100-
1610010 000100050-
172000500 00010 500150-
1820001 000 00010 03050-
1920001 000 00010 03020-
201001 000 00018205-
212001 000 000342015-
222001 000 00034205-
23501 000 000100030-
243601 000 000650020-
257201 000 00012 00030-
269001 000 00014 00040-
Пример
Входные данные
1
3 3 6

3

OK

OK

3

FAIL

OK

OK
Выходные данные


? 1

- 1 1

- 2 3

? 1

- 3 3

- 3 2

! 6
Примечание

Это интерактивная задача. При использовании буферизованного вывода не забывайте сбрасывать буфер при выводе запросов (sys.stdout.flush() в Python, System.out().flush() в Java и std::cout.flush() в C++).

В примере из условия происходят следующие действия:

  1. Первым запросом выясняется, что первое министерство — самое маленькое, так как во всех трех городах хотя бы столько же министров.
  2. Следующими двумя действиями в отставку отправляется один министр из первого города и три из второго. Из того, что $$$h = 3$$$, и ответ интерактора на запрос «- 2 3» — это «OK», можно сделать вывод, что во втором городе было ровно $$$3$$$ министра.
  3. После этого выясняется, что во всех городах не меньше министров, чем в первом городе. Но мы знаем, что во втором их теперь $$$0$$$, а значит и в первом стало $$$0$$$, то есть было $$$1$$$.
  4. Последними двумя запросами после неудачной попытки отправить трех министров из третьего города, и удачной — двух, мы понимаем, что их было ровно $$$2$$$.

Таким образом, ответ на тест из условия — $$$1 + 3 + 2 = 6$$$. Обратите внимание также, что $$$q = 6$$$, и было сделано ровно $$$6$$$ запросов вида «-» и «?», тогда как запрос «!» в это количество не входит.