P15467 [ICPC 2024 WF] Doubles Horseback Wrestling 双人马背摔跤

题目背景

4s,2048 MB 翻译来源:loj #6974. [「ICPC World Finals 2024」双人马背摔跤](https://loj.ac/p/6974)。

题目描述

游牧游戏探索委员会(NGEC)正在筹划一项双人马背摔跤锦标赛,参赛者将成对骑在同一匹马上进行比赛。他们已经公布了一场试点锦标赛,并有 $n$ 位热情的骑手报名参加!现在,NGEC 需要将这些骑手配对,以确保锦标赛既公平又激动人心。 中亚奥达里斯帕克联盟(CAAL)维护着所有马背摔跤选手的名单及其评分。根据以往普通马背摔跤的经验,NGEC 决定,如果一对骑手的评分之和等于特定的整数 $s$,这样的配对是最平衡的。 由于一些复杂的许可原因,CAAL 拒绝公开每位骑手的准确评分。但 NGEC 掌握了一些可靠的估计数据,知道每位骑手 $i$ 的真实评分 $r_{i}$ 位于区间 $\left[l_{i}, u_{i}\right]$ 内。因此,如果存在评分 $r_{i} \in \left[l_{i}, u_{i}\right]$ 和 $r_{j} \in \left[l_{j}, u_{j}\right]$,使得 $r_{i} + r_{j} = s$,NGEC 会考虑将骑手 $i$ 和 $j$ 配对。 NGEC 希望尽可能多地组成不重叠的骑手对。你需要帮助他们实现这一目标。

输入格式

第一行包含两个整数 $n$ 和 $s$ $(2 \leq n \leq 2 \cdot 10^{5}, 1 \leq s \leq 10^{9})$,分别表示骑手的数量和一对骑手评分之和的目标值。骑手编号从 $1$ 到 $n$。接下来有 $n$ 行,其中第 $i$ 行包含两个整数 $l_{i}$ 和 $u_{i}$ $(1 \leq l_{i} \leq u_{i} \leq 10^{9})$,表示第 $i$ 位骑手的评分范围。

输出格式

输出 $k$,表示可以组成的最大骑手对数量,随后输出 $k$ 组整数对,表示每对骑手的编号。如果有多种配对方式,输出任意一种即可。