AlgoMooc
你已开通华为OD训练营权益,还差最后一步——完成入营激活(兑换课程 + 加飞书 + 登记服务群),即可解锁全部课程与专属服务。去激活 →
← 返回题库

P3006. 事件推送

中等通过率 38% · 提交 797 · 通过 304
双指针模拟排序

小慕正在处理一个上的两个项目集合A = {A1, A2, …, Am}和B = {B1, B2, …, Bn},其中Ai和Bj均为正整数,且两个集合已经按照从小到大的顺序排好序。 A和B均不为空,给定一个R(正整数),小慕需要列出所有同时满足如下条件的(Ai, Bj)数对: 1. Ai <= Bj 2. Ai与Bj之间的距离小于等于R 3. 在满足条件1和2的前提下,每个Ai只需输出 4. 输出结果按照Ai从小到大的顺序排序

提示:带虚线的词点一下有通俗解释。

输入描述

第一行三个正整数m,n,R 第二行m个正整数,表示集合A 第三行n个正整数,表示集合B 输入限制: 1 <= R <= 100000,1 <= n, m <= 100000,1 <= Ai, Bj <= 1000000000

输出描述

每组数对输出一行Ai和Bj,以空格隔开

示例

示例 1

输入

4 5 5
1 5 5 10
1 3 8 8 20

输出

1 1
5 8
5 8

时间限制 1000 ms · 内存限制 128 MB

看不懂题目?点开图解
X 0 1 5 8 10 A1=1 A2=5 A3=10 B1=1 B2=3 B3=8 B4=8 B5=20 距离=7 > R=5 A点 B点 条件:Ai ≤ Bj 且距离 ≤ R,每个Ai取最近Bj
写完代码点「提交」,将对全部测试用例判题。

向老师提问

针对「事件推送」把疑问、代码和报错填清楚,老师收到后能更快、更准地回复你。