P6829 [IOI 2020] 植物比较
题目背景
**这是一道交互题**。
本题仅支持 C++ 系列语言,提交时不需要包含 `plant.h` 头文件。
题目描述
植物学家 Hazel 参观过新加坡植物园的一个特别展览。在这次展览中,有 $n$ 棵 **高度互不相同** 的植物,它们排成了一个圆。这些植物按顺时针方向从 $0$ 到 $n-1$ 编号,植物 $n-1 $ 与植物 $0$ 是相邻的。
对于每棵植物 $i\ (0 \le i \le n-1$),Hazel 将它与顺时针方向的后 $k-1$ 棵植物进行比较,记录下数值 $r[i]$ 以表示这 $k-1$ 棵植物中有多少棵的高度大于植物 $i$。因此,每个 $r[i]$ 的数值是由某段连续 $k$ 棵植物的相对高度决定的。
例如,假设 $n=5$,$k=3$,$i=3$。植物 $3$ 顺时针方向的后 $k-1=2$ 棵植物是植物 $4$ 和植物 $0$。如果植物 $4$ 比植物 $3$ 高,且植物 $0$ 比植物 $3$ 矮,那么 Hazel 将会记录 $r[3]=1$。
你可以假设 Hazel 记录的数值 $r[i]$ 都是正确的。也就是说,这些植物至少存在一组互不相同的高度符合 Hazel 所记录的数值。
本题要求你比较 $q$ 对植物的高度。由于你没有机会参观这次展览,你仅有的信息来源是 Hazel 的笔记本,其中记录了 $k$ 和序列 $r[0],\ldots, r[n-1]$ 的值。
对于每对需要比较的植物 $x$ 和 $y$($x$ 和 $y$ 不同),判定它们符合以下哪种情况:
- 植物 $x$ 一定比植物 $y$ 高:对于任意一组符合数组 $r$ 且互不相同的高度 $h[0],\ldots h[n-1]$,都有 $h[x] > h[y]$。
- 植物 $x$ 一定比植物 $y$ 矮:对于任意一组符合数组 $r$ 且互不相同的高度 $h[0],\ldots h[n-1]$,都有 $h[x]
输入格式
无
输出格式
无
说明/提示
#### 样例说明
#### 例 1
考虑以下调用:
```cpp
init(3, [0, 1, 1, 2])
```
假设评测程序调用了 `compare_plants(0, 2)`。由 $r[0]=0$ 可以推断植物 $2$ 不比植物 $0$ 高,因此该调用应该返回 $1$。
假设评测程序接下来调用了 `compare_plants(1, 2)`。由于对每组符合以上条件的植物高度,都有植物 $1$ 比物 $2$ 矮,因此该调用应该返回 $-1$。
#### 例 2
考虑以下调用:
```cpp
init(2, [0, 1, 0, 1])
```
假设评测程序调用了 `compare_plants(0, 3)`。由 $r[3]=1$ 可以推断植物 $0$ 比植物 $3$ 高,因此该调用应该返回 $1$。
假设评测程序接下来调用了 `compare_plants(1, 3)`。两组高度 $[3,1,4,2]$ 和 $[3,2,4,1]$ 都符合 Hazel 的观测记录,由于在第一种情况中植物 $1$ 比植物 $3$ 矮,而在第二种情况中它比植物 $3$ 高,因此该调用应该返回 $0$。
#### 约束条件
- $2\le k\le n\le 200\ 000$
- $1\le q\le 200\ 000$
- $0 \le r[i]\le k-1$(对所有 $0 \le i \le n-1$)
- $0\le x n$
3. (13 分)$2 \cdot k > n$
4. (17 分)每次 `compare_plants` 调用的正确答案是 $1$ 或 $-1$
5. (11 分)$n\le 300, q\le \frac{n\cdot (n-1)}{2}$
6. (15 分)每次调用 `compare_plants` 时有 $x=0$
7. (25 分)没有附加约束条件
#### 评测程序示例
评测程序示例以如下格式读取输⼊数据:
第 $1$ 行:$n\ k\ q$
第 $2$ 行:$r[0]\ r[1]\ \cdots\ r[n-1]$
第 $3+i\ (0\le i\le q-1)$ 行:$x\ y$,表⽰第 $i$ 次调用 `compare_plants` 时的参数
评测程序示例以如下格式打印你的答案:
第 $1+i\ (0\le i\le q-1)$ 行:第 $i$ 次调用 `compare_plants` 的返回值