luogu#P6290. [eJOI2017] 粒子

[eJOI2017] 粒子

题目描述

两台相距 LL 的直线粒子加速器相对放置着。加速器 AA 发射 xx 粒子,加速器 BB 发射 yy 粒子。这两种粒子相遇时会碰撞并湮灭。注意,一个 xx 粒子可以超越另一个 xx 粒子,不会发生任何事。对于 yy 粒子也是同理。

在这样的条件下,从 00 时刻开始,A,BA,B 加速器 分别开始发射 NNx,yx,y 粒子。每一个粒子都以一个固定的速度移动。x,yx,y 粒子分别被编号为 1,2,N1,2,\cdots N

注:在时间 tt 内,速度为 vv 的粒子移动的路程为 s=vts = vt

xx 粒子的发射时刻从编号 11NN 分别为:0=tx1<tx2<tx3<<txN0 = tx_1 < tx_2 < tx_3 < \cdots < tx_N,速度分别为:vx1,vx2,vx3,,vxNvx_1, vx_2, vx_3, \cdots, vx_N

相应的, yy 粒子的发射时刻分别为:0=ty1<ty2<ty3<<tyN0 = ty_1 < ty_2 < ty_3 < \cdots < ty_N,速度分别为:vy1,vy2,vy3,,vyNvy_1, vy_2, vy_3, \cdots, vy_N

发射粒子的过程中满足:

  • 每个粒子会碰撞一个相反类型(x,yx,y 粒子互为相反粒子)的粒子。
  • 当两个粒子碰撞时,所有其他粒子到碰撞点的距离将 1\ge 1。在前 KK 次碰撞中,这个条件被满足。

你的任务是,编写一个程序,确定前 KK 次碰撞的粒子对。

输入格式

第一行,三个正整数,由空格隔开:N,L,KN,L,K

接下来 NN 行,每行两个整数:txi,vxitx_i,vx_i

再接下来 NN 行,每行两个整数:tyi,vyity_i,vy_i

输出格式

输出共 KK 行。

每行两个正整数 i,ji,j,表示第 iixx 粒子和第 jjyy 粒子。

ll 行表示第 iixx 粒子和第 jjyy 粒子是第 ll 个发生碰撞的,即输出顺序代表碰撞的先后顺序。

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

提示

数据规模与约定

对于所有数据,保证:

  • 1N5×1041 \le N \le 5\times 10^4
  • 1L1091 \le L \le 10^9
  • 1Kmin(102,N)1\le K \le \min(10^2,N)
  • txi,tyi[0,109]tx_i,ty_i \in [0,10^9]
  • vxi,vyi(0,109]vx_i,vy_i \in (0,10^9]

其中,对于 30%30 \% 的数据,有 1N1031 \le N \le 10^3

说明

原题来自:eJOI2017 Problem C Particles

翻译提供:@_Wallace_