#3836. 兔猫信奥学院的“右侧守护者”
兔猫信奥学院的“右侧守护者”
🏫 题目名称:兔猫信奥学院的“右侧守护者”
🐰🐱 题目描述
在兔猫信奥学院的“魔法区间殿”里,加菲老师布置了一排排时空区间 \([start_i, end_i]\)。小兔和小猫的任务是:
对于每一个时空区间 (i),找到一扇“右侧时空门”——也就是另一个区间 (j),满足
并且在所有满足条件的区间中,\(start_j\) 最小(如果有多扇门,取最靠左的那扇)。如果不存在这样的“右侧时空门”,就记为 (-1)。
加菲老师强调:“时空区间的起点都不相同,排列也未必按顺序给出,你要在 \(O(n\log n)\) 时间内快速完成所有寻找!”
📥 输入格式
第一行:整数 n,表示区间数量
接下来 n 行:每行两个整数 start_i, end_i,表示第 i 个区间的起点和终点
- \(1 \le n \le 2\times10^4\)
- \(-10^6 \le start_i \le end_i \le 10^6\)
- 所有 \(start_i\) 两两不同
📤 输出格式
共 n 个整数,按原输入顺序依次输出每个区间的“右侧区间”下标(0 ~ n-1),不存在则输出 -1
💡 输入输出样例
样例 1
1
1 2
-1
说明:只有一个区间,没有“右侧”区间。
样例 2
3
3 4
2 3
1 2
-1 0 1
说明: 对于 ([3,4]) 无右侧;
([2,3]) 的右侧是 ([3,4])(下标 0);
([1,2]) 的右侧是 ([2,3])(下标 1)。
样例 3
3
1 4
2 3
3 4
-1 2 -1
说明: ([2,3]) 的右侧是 ([3,4])(下标 2),其余无右侧。
📊 数据范围
- 区间数量 \(n\le2\times10^4\) - \(-10^6\le start_i\le end_i\le10^6\)
- 起点互不相同
- 要求总体时间复杂度 \(O(n\log n)\)