P14007 「florr IO Round 1」查询游戏

题目描述

**这是一道交互题。** 有一个长度为 $n$ 的序列 $a$,你需要求出一个区间,满足它的区间和的绝对值最大。 但是,你并不会得到这个序列,你需要通过一些对交互库的询问来得出上述询问的答案。 当你得到了答案,可以通过如下方式回答: - `! l r`:你需要保证 $\displaystyle\left|\sum_{i=l}^r a_i\right|=\max_{x=1}^n\max_{y=x}^n\left|\sum_{i=x}^y a_i\right|$,然后立即终止程序。 ### 交互方式 **本题使用标准输入输出流进行交互。** **请确保交互格式正确**,否则将会得到 WA 或 TLE 等判定结果。 **基础信息** 最初,你会在第一行读入一个整数 $n$,表示序列 $a$ 的长度。 **询问格式** 你可以进行以下询问,但询问次数不得超过 $2n$: - `? l r`:询问交互库是否有 $\displaystyle\sum_{i=l}^r a_i\ge 0$。 每次询问,你可以直接向**标准输出**输出你的若干次操作,**并在每次操作后清空缓冲区**。 你可以使用如下语句来清空缓冲区: - 对于 C/C++:`fflush(stdout)`; - 对于 C++:`std::cout

输入格式

见【交互方式】。

输出格式

见【交互方式】。

说明/提示

### 数据范围 **本题采用捆绑测试。** | $\tt Subtask$ | $n\le$ | 询问次数限制 | $\tt Points$ | | :----------: | :----------: | :----------: | :----------: | | $0$ | $5$ | $\cfrac{n(n+1)}{2}$ | $10$ | | $1$ | $2000$ | $\cfrac{n(n+1)}{2}$ | $30$ | | $2$ | $10^5$ | $2n$ | $60$ | - 对于 $100\%$ 的数据,满足 $1\le n\le 10^5$。 - 保证不存在区间和的绝对值最大为 $0$ 的数据。