Ввод / вывод: | интерактивный | Ограничение времени: | 1 сек | |
Ограничение памяти: | 256 Мб |
Данная задача является интерактивной. Ваша программа будет взаимодействовать с программой жюри путем отправки и приема сообщений определенного вида.
У жюри есть двумерная матрица N строк на M столбцов заполненная числами, где каждое число может быть либо 1, либо 0. Строки имеют нумерацию с 1 по N сверху вниз, столбцы — с 1 по M слева направо.
Ваша программа может делать запросы вида "? Xi Yi Ai Bi
",
где i — номер запроса,
Xi, Yi — координаты левого верхнего угла прямоугольника, номера строки и столбца соответственно,
а Ai, Bi — размеры сторон прямоугольника, количество строк и столбцов соответственно.
В ответ на запрос программа жюри сообщит о количестве единиц в прямоугольнике из запроса.
Каждый из прямоугольников должен целиком лежать внутри матрицы, то есть должны выполняться следующие неравенства:
1 ≤ Xi, Ai ≤ N и 1 ≤ Yi, Bi ≤ M
Xi + Ai − 1 ≤ N и Yi + Bi − 1 ≤ M
Также имеются ограничения на размеры прямоугольников. Первый прямоугольник должен быть меньше матрицы по каждой из сторон без учета ориентации, а каждый последующий прямоугольник должен быть меньше предыдущего по каждой из сторон без учета ориентации. Более формально должны выполняться следующие неравенства:
min(A1, B1) < min(N, M) и max(A1, B1) < max(N, M)
min(Ai, Bi) < min(Ai − 1, Bi − 1) и max(Ai, Bi) < max(Ai − 1, Bi − 1) для i > 1
Требуется определить количество единиц в матрице, сделав любое количество запросов. Гарантируется, что значения чисел в матрице определены заранее и не зависят от запросов.
В первой строке входных данных записаны целые числа N и M — размеры матрицы.
Чтобы сделать i-й запрос, ваша программа должна вывести "? Xi Yi Ai Bi
",
где Xi, Yi — целые числа, координаты левого верхнего угла прямоугольника, номера строки и столбца соответственно,
а Ai, Bi — целые числа, размеры сторон прямоугольника, количество строк и столбцов соответственно.
После запроса программа жюри отвечает вашей программе целым числом S — количеством единиц в прямоугольнике из запроса.
Когда ваша программа определила ответ на задачу, она должна вывести "! S
",
где S — целое число, количество единиц в матрице.
После вывода ответа программа должна завершиться.
Если ваша программа сделает недопустимый запрос, то она получит вердикт "Presentation error".
Каждый запрос и вывод окончательного результата должен быть одиночной строкой заканчивающейся одиночным переводом строки (\n
).
Буфер вывода необходимо сбрасывать после каждой строки:
Язык | C++ | Pascal | Java | Python |
Код | cout.flush() |
flush(output) |
System.out.flush() |
stdout.flush() |
10 ≤ N, M ≤ 100
0 ≤ S ≤ 104
Матрицы из примеров представлены на картинке.
№ | Стандартный вход | Стандартный выход |
---|---|---|
1 |
|
|
2 |
|
|