P6290 [eJOI 2017] 粒子

题目描述

两台相距 $L$ 的直线粒子加速器相对放置着。加速器 $A$ 发射 $x$ 粒子,加速器 $B$ 发射 $y$ 粒子。这两种粒子相遇时会碰撞并湮灭。注意,一个 $x$ 粒子可以超越另一个 $x$ 粒子,不会发生任何事。对于 $y$ 粒子也是同理。 在这样的条件下,从 $0$ 时刻开始,$A,B$ 加速器 分别开始发射 $N$ 个 $x,y$ 粒子。每一个粒子都以一个固定的速度移动。$x,y$ 粒子分别被编号为 $1,2,\cdots N$。 注:在时间 $t$ 内,速度为 $v$ 的粒子移动的路程为 $s = vt$。 $x$ 粒子的发射时刻从编号 $1$ 到 $N$ 分别为:$0 = tx_1 < tx_2 < tx_3 < \cdots < tx_N$,速度分别为:$vx_1, vx_2, vx_3, \cdots, vx_N$。 相应的, $y$ 粒子的发射时刻分别为:$0 = ty_1 < ty_2 < ty_3 < \cdots < ty_N$,速度分别为:$vy_1, vy_2, vy_3, \cdots, vy_N$。 发射粒子的过程中满足: - 每个粒子会碰撞一个相反类型($x,y$ 粒子互为相反粒子)的粒子。 - 当两个粒子碰撞时,所有其他粒子到碰撞点的距离将 $\ge 1$。在前 $K$ 次碰撞中,这个条件被满足。 ------------------------ 你的任务是,编写一个程序,确定前 $K$ 次碰撞的粒子对。

输入格式

第一行,三个正整数,由空格隔开:$N,L,K$。 接下来 $N$ 行,每行两个整数:$tx_i,vx_i$。 再接下来 $N$ 行,每行两个整数:$ty_i,vy_i$。

输出格式

输出共 $K$ 行。 每行两个正整数 $i,j$,表示第 $i$ 个 $x$ 粒子和第 $j$ 个 $y$ 粒子。 第 $l$ 行表示第 $i$ 个 $x$ 粒子和第 $j$ 个 $y$ 粒子是第 $l$ 个发生碰撞的,即输出顺序代表碰撞的先后顺序。

说明/提示

#### 数据规模与约定 对于所有数据,保证: - $1 \le N \le 5\times 10^4$。 - $1 \le L \le 10^9$。 - $1\le K \le \min(10^2,N)$。 - $tx_i,ty_i \in [0,10^9]$。 - $vx_i,vy_i \in (0,10^9]$。 其中,对于 $30 \%$ 的数据,有 $1 \le N \le 10^3$。 #### 说明 原题来自:[eJOI2017](www.ejoi.org) Problem C [Particles](http://ejoi.org/wp-content/themes/ejoi/assets/pdfs/tasks_day_1/EN/particles_statement-en.pdf) 翻译提供:@[```_Wallace_```](https://www.luogu.com.cn/user/61430)