#HK3854. 「eJOI2017」Particles

「eJOI2017」Particles

题目描述

题目译自 eJOI2017 Problem B. Particles

两个线性粒子加速器 AA 和 BB 对向放置,间距为 LL。它们正在加速基本粒子,AA 正在加速 xx 粒子,BB 正在加速 yy 粒子。这两种粒子相对运动,当一个 xx 粒子与 yy 粒子相遇时,它们相互碰撞并湮灭。需要注意的是,xx 粒子可以超越其他 xx 粒子,yy 粒子可以超越其他 yy 粒子,并不对各自超越的粒子产生影响。

像这样,对于给定的一些时间点,从这两个粒子加速器中射出了 NN 个 xx 粒子和 NN 个 yy 粒子。每个粒子都以自己恒定的速度做匀速直线运动。粒子按射出顺序编号为 11 到 NN,对于 xx 粒子和 yy 粒子均满足以上条件。

注:对于一段时间 tt,速度为 vv 的粒子运动的距离为 s=vts=vt。

对于 xx 粒子,射出时刻为 0=tx1<tx2<…<txN0=t_{x_1}<t_{x_2}<\ldots<t_{x_N},它们的速度分别为 vx1,vx2,…,vxNv_{x_1},v_{x_2},\ldots,v_{x_N}。同样的,对于 yy 粒子,射出时刻为 0=ty1<ty2<…<tyN0=t_{y_1}<t_{y_2}<\ldots<t_{y_N},它们的速度分别为 vy1,vy2,…,vyNv_{y_1},v_{y_2},\ldots,v_{y_N}。

粒子的射出满足如下条件:

  • 每个粒子都会和对向粒子碰撞。
  • 对于前 KK 次碰撞,当两个粒子碰撞时,其他所有粒子距离碰撞点之间的距离均大于或等于 11。

写一个程序确定两种粒子之间的前 KK 次碰撞。

输入格式

第一行三个整数 N,L,KN,L,K。

接下来 NN 行,每行两个非负整数 txi,vxit_{x_i},v_{x_i},表示第 ii 个 xx 粒子的射出时刻与速度。

接下来 NN 行,每行两个非负整数 tyi,vyit_{y_i},v_{y_i},表示第 ii 个 yy 粒子的射出时刻与速度。

输出格式

输出 KK 行,每行包含两个正整数,第 ii 行表示第 ii 次碰撞中的 xx 粒子与 yy 粒子的编号。按碰撞次数递增的顺序输出——从第一次到第 KK 次。

4 100 2
0 1
2 3
3 2
6 10
0 5
3 10
5 1
7 20

4 2
2 4

数据范围与提示

对于所有数据,$1\le N\le 50\ 000,1\le L\le 10^9,1\le K\le 100,K\le N$。保证 $0\le t_{x_i},t_{y_i}\le 10^9,1\le v_{x_i},v_{y_i}\le 10^9$。

  • 对于 30%30\% 的数据,N≤103N\le 10^3。