CF406D.Hill Climbing

提高+/省选-

通过率:0%

AC君温馨提醒

该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。

题目描述

本题与 Little Chris 无关,讨论的是“爬山人”(hill climbers)。Chris 绝对不是其中之一。

有 nn 座山排成一排,每座山可以视作一条竖直线段的一端在地面上。这些山从左到右依次编号为 11 到 nn。第 ii 座山在 xix_i 位置,高度为 yiy_i。对于任意两座山 aa 和 bb,若从 bb 的顶部能看到 aa 的顶部,则用绳子连接这两座山的顶部。正式地说,若连接这两座山顶的线段不会与其它任何一座山的线段相交或相切,则这两座山的顶端可连接绳子。通过这些绳索,爬山人可以从一座山移动到另一座山。

有 mm 支登山小队,每队正好有两名成员。第 ii 支小队的两名登山者分别位于第 aia_i 座与第 bib_i 座山的顶部。他们想在某座山顶会合。两名登山者的移动规则如下:

  1. 如果登山者当前就在对方已经位于(或未来会抵达的)山顶,则这个登山者停在该山顶;
  2. 否则,他会选择从当前位置通过绳子可到达且靠右的山顶(即可达的最右边的山顶),然后继续上述过程(他可以攀爬比当前山矮的山顶)。

示意图

对于每支登山小队,输出这两名成员最终汇合的山顶编号!

输入格式

第一行输入一个整数 nn(1≤n≤1051 \leq n \leq 10^{5}),表示山的数量。接下来的 nn 行,每行包含两个用空格分隔的整数 xix_i、yiy_i(1≤xi≤1071 \leq x_i \leq 10^{7};1≤yi≤10111 \leq y_i \leq 10^{11}),表示第 ii 座山的位置和高度。山顶的信息按 xix_i 严格递增给出,即如果 i<ji < j,那么 xi<xjx_i < x_j。

接下来一行输入一个整数 mm(1≤m≤1051 \leq m \leq 10^{5}),表示队伍数量。接下来的 mm 行,每行包含两个用空格分隔的整数 aia_i、bib_i(1≤ai,bi≤n1 \leq a_i, b_i \leq n),表示第 ii 支队伍的两名成员所在地的山的编号。可能出现 ai=bia_i = b_i。

输出格式

在一行输出 mm 个用空格分隔的整数,第 ii 个整数表示第 ii 支队伍两名成员最终会合的山顶编号。

输入输出样例

  • 输入#1

    6
    1 4
    2 1
    3 2
    4 3
    6 4
    7 4
    3
    3 1
    5 6
    2 3
    

    输出#1

    5 6 3 
    

说明/提示

由 ChatGPT 5 翻译

输入解题思路,AI测评打分。不知道怎么写?

首页