CF161A Dress'em in Vests!
题目描述
二维王国正经历着艰难时期……今天早上,三维王国向二维王国宣战。这场(可能装备有武器的)冲突将决定直线的最终归属权。
二维王国有 $n$ 名正规军士兵。每位士兵都进行了登记,并标明了自己希望的防弹衣尺寸:第 $i$ 位士兵要求的尺寸为 $a_{i}$。据悉,这些士兵并不挑剔,因此指挥部认为,只要防弹衣的尺寸在 $a_{i}-x$ 到 $a_{i}+y$(包括端点)之间,士兵们都会觉得合适(给定 $x,y \geq 0$)。
二维王国目前拥有 $m$ 件防弹衣,第 $j$ 件的尺寸为 $b_{j}$。请帮助二维王国的军队动员起来:为尽可能多的士兵配备防弹衣。每件防弹衣只能为一名士兵使用。第 $i$ 名士兵可以穿上第 $j$ 件防弹衣,当且仅当 $a_{i}-x \leq b_{j} \leq a_{i}+y$。
输入格式
第一行包含四个整数 $n$、$m$、$x$ 和 $y$($1\leq n,m\leq 10^{5}$,$0\leq x,y\leq 10^{9}$)——士兵的数量、防弹衣的数量,以及表明士兵“不挑剔”程度的两个数字。
第二行包含 $n$ 个按非递减顺序排列的整数 $a_{1},a_{2},...,a_{n}$($1\leq a_{i}\leq 10^{9}$),用空格隔开,表示各个士兵希望的防弹衣尺寸。
第三行包含 $m$ 个按非递减顺序排列的整数 $b_{1},b_{2},...,b_{m}$($1\leq b_{j}\leq 10^{9}$),用空格隔开,表示所有可用防弹衣的尺寸。
输出格式
第一行输出一个整数 $k$,表示最多能为多少名士兵配备防弹衣。
接下来的 $k$ 行,每行输出一对整数 $u_{i}$ $v_{i}$,表示编号为 $u_{i}$ 的士兵应穿编号为 $v_{i}$ 的防弹衣。士兵和防弹衣的编号均从输入中的顺序开始,从 1 计数。所有输出的士兵编号互不相同,所有输出的防弹衣编号也互不相同。可以以任意顺序输出这些配对。
如果有多种最优方案,可以输出其中任意一种。
说明/提示
在第一个样例中,需要使防弹衣尺寸完全匹配:第一个士兵穿第一件防弹衣(尺寸为 1),第三个士兵穿第二件防弹衣(尺寸为 3)。本样例还有另一种解法,那就是将第二件防弹衣分配给第四个士兵(而不是第三个)。
在第二个样例中,防弹衣的尺寸与期望尺寸最多可相差 2 个单位,因此所有士兵都可以被装备。
由 ChatGPT 5 翻译