codeforces#P1672E. notepad.exe

    ID: 32898 远端评测题 1000ms 256MiB 尝试: 0 已通过: 0 难度: (无) 上传者: 标签>binary searchconstructive algorithmsgreedyinteractive*2200

notepad.exe

Description

This is an interactive problem.

There are $n$ words in a text editor. The $i$-th word has length $l_i$ ($1 \leq l_i \leq 2000$). The array $l$ is hidden and only known by the grader.

The text editor displays words in lines, splitting each two words in a line with at least one space. Note that a line does not have to end with a space. Let the height of the text editor refer to the number of lines used. For the given width, the text editor will display words in such a way that the height is minimized.

More formally, suppose that the text editor has width $w$. Let $a$ be an array of length $k+1$ where $1=a_1 < a_2 < \ldots < a_{k+1}=n+1$. $a$ is a valid array if for all $1 \leq i \leq k$, $l_{a_i}+1+l_{a_i+1}+1+\ldots+1+l_{a_{i+1}-1} \leq w$. Then the height of the text editor is the minimum $k$ over all valid arrays.

Note that if $w < \max(l_i)$, the text editor cannot display all the words properly and will crash, and the height of the text editor will be $0$ instead.

You can ask $n+30$ queries. In one query, you provide a width $w$. Then, the grader will return the height $h_w$ of the text editor when its width is $w$.

Find the minimum area of the text editor, which is the minimum value of $w \cdot h_w$ over all $w$ for which $h_w \neq 0$.

The lengths are fixed in advance. In other words, the interactor is not adaptive.

The first and only line of input contains a single integer $n$ ($1 \leq n \leq 2000$)  — the number of words on the text editor.

It is guaranteed that the hidden lengths $l_i$ satisfy $1 \leq l_i \leq 2000$.

Interaction

Begin the interaction by reading $n$.

To make a query, print "? $w$" (without quotes, $1 \leq w \leq 10^9$). Then you should read our response from standard input, that is, $h_w$.

If your program has made an invalid query or has run out of tries, the interactor will terminate immediately and your program will get a verdict Wrong answer.

To give the final answer, print "! $area$" (without the quotes). Note that giving this answer is not counted towards the limit of $n+30$ queries.

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:

  • fflush(stdout) or cout.flush() in C++;
  • System.out.flush() in Java;
  • flush(output) in Pascal;
  • stdout.flush() in Python;
  • see documentation for other languages.

Hacks

The first line of input must contain a single integer $n$ ($1 \leq n \leq 2000$) — the number of words in the text editor.

The second line of input must contain exactly $n$ space-separated integers $l_1,l_2,\ldots,l_n$ ($1 \leq l_i \leq 2000$).

Input

The first and only line of input contains a single integer $n$ ($1 \leq n \leq 2000$)  — the number of words on the text editor.

It is guaranteed that the hidden lengths $l_i$ satisfy $1 \leq l_i \leq 2000$.

Samples

6

0

4

2
? 1

? 9

? 16

! 32

Note

In the first test case, the words are $\{\texttt{glory},\texttt{to},\texttt{ukraine},\texttt{and},\texttt{anton},\texttt{trygub}\}$, so $l=\{5,2,7,3,5,6\}$.

If $w=1$, then the text editor is not able to display all words properly and will crash. The height of the text editor is $h_1=0$, so the grader will return $0$.

If $w=9$, then a possible way that the words will be displayed on the text editor is:

  • $\texttt{glory__to}$
  • $\texttt{ukraine__}$
  • $\texttt{and_anton}$
  • $\texttt{__trygub_}$

The height of the text editor is $h_{9}=4$, so the grader will return $4$.

If $w=16$, then a possible way that the words will be displayed on the text editor is:

  • $\texttt{glory_to_ukraine}$
  • $\texttt{and_anton_trygub}$

The height of the text editor is $h_{16}=2$, so the grader will return $2$.

We have somehow figured out that the minimum area of the text editor is $32$, so we answer it.