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$ 的数据。