CF1493F.Enchanted Matrix

普及/提高-

通过率:0%

AC君温馨提醒

该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。

题目描述

This is an interactive problem.

There exists a matrix aa of size n×mn \times m ( nn rows and mm columns), you know only numbers nn and mm . The rows of the matrix are numbered from 11 to nn from top to bottom, and columns of the matrix are numbered from 11 to mm from left to right. The cell on the intersection of the xx -th row and the yy -th column is denoted as (x,y)(x, y) .

You are asked to find the number of pairs (r,c)(r, c) ( 1rn1 \le r \le n , 1cm1 \le c \le m , rr is a divisor of nn , cc is a divisor of mm ) such that if we split the matrix into rectangles of size r×cr \times c (of height rr rows and of width cc columns, each cell belongs to exactly one rectangle), all those rectangles are pairwise equal.

You can use queries of the following type:

  • ? hh ww i1i_1 j1j_1 i2i_2 j2j_2 ( 1hn1 \le h \le n , 1wm1 \le w \le m , 1i1,i2n1 \le i_1, i_2 \le n , 1j1,j2m1 \le j_1, j_2 \le m ) — to check if non-overlapping subrectangles of height hh rows and of width ww columns of matrix aa are equal or not. The upper left corner of the first rectangle is (i1,j1)(i_1, j_1) . The upper left corner of the second rectangle is (i2,j2)(i_2, j_2) . Subrectangles overlap, if they have at least one mutual cell. If the subrectangles in your query have incorrect coordinates (for example, they go beyond the boundaries of the matrix) or overlap, your solution will be considered incorrect.

You can use at most $ 3 \cdot \left \lfloor{ \log_2{(n+m)} } \right \rfloor$ queries. All elements of the matrix aa are fixed before the start of your program and do not depend on your queries.

输入格式

The first line contains two integers nn and mm ( 1n,m10001 \le n, m \le 1000 ) — the number of rows and columns, respectively.

输出格式

When ready, print a line with an exclamation mark ('!') and then the answer — the number of suitable pairs (r,c)(r, c) . After that your program should terminate.

Interaction

To make a query, print a line with the format "? hh ww i1i_1 j1j_1 i2i_2 j2j_2 ", where the integers are the height and width and the coordinates of upper left corners of non-overlapping rectangles, about which you want to know if they are equal or not.

After each query read a single integer tt ( tt is 00 or 11 ): if the subrectangles are equal, t=1t=1 , otherwise t=0t=0 .

In case your query is of incorrect format or you asked more than 3log2(n+m)3 \cdot \left \lfloor{ \log_2{(n+m)} } \right \rfloor queries, you will receive the Wrong Answer verdict.

After printing a query do not forget to output end of line and flush the output. Otherwise, you will get Idleness limit exceeded. To do this, use:

  1. fflush(stdout) or cout.flush() in C++;
  2. System.out.flush() in Java;
  3. flush(output) in Pascal;
  4. stdout.flush() in Python;
  5. see documentation for other languages.
    It is guaranteed that the matrix aa is fixed and won't change during the interaction process.

Hacks format

For hacks use the following format.

The first line contains two integers nn and mm ( 1n,m10001 \le n, m \le 1000 ) — the number of rows and columns in the matrix, respectively.

Each of the next nn lines contains mm integers — the elements of matrix aa . All the elements of the matrix must be integers between 11 and nmn \cdot m , inclusive.

输入输出样例

  • 输入#1

    3 4
    1
    1
    1
    0

    输出#1

    ? 1 2 1 1 1 3
    ? 1 2 2 1 2 3
    ? 1 2 3 1 3 3
    ? 1 1 1 1 1 2
    ! 2

说明/提示

In the example test the matrix aa of size 3×43 \times 4 is equal to:

<pre class="verbatim"><br></br>1 2 1 2<br></br>3 3 3 3<br></br>2 1 2 1<br></br>
首页