#HK5436. 「OOI 2016 Day 2」蝙蝠侠归来

「OOI 2016 Day 2」蝙蝠侠归来

题目描述

题目译自 Open Olympiad in Informatics 2016 Day2 T2 「Бэтмен возвращается / Batman Returns」。

如今的哥谭市由一条街道组成,沿街排列着 nn 座摩天大楼。这些大楼从西到东依次编号为 11 到 nn,其中第 ii 座大楼的高度为 hih_i。

每天傍晚,蝙蝠侠都会在城市上空进行巡逻飞行。他会爬到一座摩天大楼的屋顶,然后从那里滑翔到另一座大楼的屋顶。由于持续的强风,他只能向西方向滑翔,但飞行中几乎不损失高度。因此,他只能从编号为 qq 的大楼滑翔到编号为 pp 的大楼,前提是 p<qp < q 且 hp<hqh_p < h_q。蝙蝠侠在飞行中操控自如,因此 pp 和 qq 之间的大楼高度和数量无关紧要。出于对城市犯罪率的担忧,蝙蝠侠会选择合适的 pp 和 qq,使得 q−pq - p 的值尽可能大。

市政府制定了 mm 个城市重建计划。根据第 ii 个计划,只有编号从 lil_i 到 rir_i(包含两端)的大楼会被保留,其余大楼将被拆除。蝙蝠侠不喜欢不确定性,因此对于每个重建计划,他希望提前知道在剩余城市部分进行巡逻的最佳方式,即找到一对 pip_i 和 qiq_i,满足 li≤pi<qi≤ril_i \leq p_i < q_i \leq r_i,hpi<hqih_{p_i} < h_{q_i},且 qi−piq_i - p_i 的值最大。

输入格式

第一行包含一个整数 nn (1≤n≤200000)(1 \leq n \leq 200000),表示沿街摩天大楼的数量。

第二行包含 nn 个整数 hih_i (1≤hi≤200000)(1 \leq h_i \leq 200000),表示从西到东各摩天大楼的高度。

第三行包含一个整数 mm (1≤m≤200000)(1 \leq m \leq 200000),表示城市重建计划的数量。

接下来的 mm 行,每行包含两个整数 lil_i 和 rir_i (1≤li<ri≤n)(1 \leq l_i < r_i \leq n),表示第 ii 个计划中市政府计划保留编号从 lil_i 到 rir_i(包含两端)的大楼。

输出格式

对于每个重建计划,输出两个整数,即最佳的 pip_i 和 qiq_i。如果巡逻变得不可能,则输出 -1 -1。

如果存在多个最佳大楼对,可以输出其中任意一对。

4
2 3 1 4
2
2 3
1 3

-1 -1
1 2

在第一个样例中:

  • 对于第一个查询,仅有的可用大楼对高度为 33 和 11,但不满足条件 3≥13 \geq 1,因此无解。
  • 对于第二个查询,大楼 11 和 22 组成的对满足条件,高度分别为 22 和 33。
7
5 4 2 4 3 1 5
4
2 6
2 7
1 7
3 7

3 5
2 7
2 7
3 7

在第二个样例中:

  • 对于第一个查询,符合条件的大楼对有高度 22 和 33,以及 22 和 44。第一对距离更大,因此是正确答案。

数据范围与提示

详细子任务附加限制及分值如下表所示。其中子任务 00 是样例。

子任务 测试点编号 分值 附加限制 备注
11 3∼123 \sim 12 1010 n,m≤100n, m \leq 100
22 13∼2213 \sim 22 1010 n,m≤500n, m \leq 500
33 23∼3223 \sim 32 1010 n,m≤1000n, m \leq 1000
44 33∼4233 \sim 42 1010 n,m≤2000n, m \leq 2000
55 43∼5243 \sim 52 1010 n,m≤5000n, m \leq 5000
66 53∼6253 \sim 62 1010 n,m≤10000n, m \leq 10000
77 63∼7263 \sim 72 1010 n,m≤20000n, m \leq 20000
88 73∼8273 \sim 82 1010 n,m≤50000n, m \leq 50000
99 -- 1010 n,m≤100000n, m \leq 100000
1010 1010 n,m≤200000n, m \leq 200000