蚂蚁
时间限制:1秒 内存限制:256M
【题目描述】
一条笔直的线路上分布着N只蚂蚁,在线路的两端各有一个蚁穴,具体说就是两处蚁穴分别在点0和点L处(1≤L≤109),最初蚁穴中没有蚂蚁。每只蚂蚁初始位置各不相同,其中第i只蚂蚁的初始位置为 xi(0≤xi≤L),并朝以一个单位每秒的速度想蚁穴方向移动,用整数di表示移动方向:若di=1表示向L处的蚁穴移动,di=-1表示向0处的蚁穴移动。每只蚂蚁还拥有一个在范围[1,103]内的重量wi。所有蚂蚁始终以恒定的速度移动,直到以下事件之一发生:
◆如果蚂蚁i移动到了一个蚁穴,则蚂蚁i停止移动。
◆当蚂蚁i和j相遇,且相遇点不是蚁穴时,它们同时掉头移动,掉头时间忽略不计。
设T等于蚁穴中蚂蚁的重量之和至少等于所有蚂蚁的重量之和的一半的最早时刻。请求出在时刻 0..T(包括时刻T)之间发生相遇的蚂蚁对总数。
【输入格式】
输入的第一行包含两个空格分隔的整数N和L。
以下N行,每行包含三个空格分隔的整数wi,xi以及di。所有的位置xi各不相同,并且满足0<xi<L。
【输出格式】
输出一行,包含答案。
【输入输出样例1】
Input
3 5
1 1 1
2 2 -1
3 3 -1
Output
2
【样例说明】
在这个例子中,蚂蚁们按如下方式移动:
1. 第一和第二只蚂蚁于时刻 0.5 在位置 1.5 相遇。此时第一只蚂蚁拥有速度-1,第二只蚂蚁拥有速度1。
2. 第二和第三只蚂蚁于时刻1在位置2相遇。此时第二只蚂蚁拥有速度−1,第三只蚂蚁拥有速度1。
3. 第一只蚂蚁于时刻2到达左边的蚁穴。
4. 第二只蚂蚁于时刻3到达左边的蚁穴。
5. 由于到达蚁穴的蚂蚁的总重量已经至少是所有蚂蚁的总重量的一半,这个过程此时终止。如果继续进行下去,第三只蚂蚁将会在时刻 4 到达右边的蚁穴。
在这个过程中,共发生了恰好两次相遇。
【输入输出样例2】
Input
10 200
20 165 -1
30 8 -1
30 70 1
50 40 -1
40 150 1
60 95 1
70 135 1
40 180 -1
20 25 -1
20 110 -1
Output
10
【子任务】
测试点 1~3 满足 N≤102,并且对所有wi=1。
测试点 4~6 满足 N≤102。
测试点 7~12 满足 N≤5×104。
【来源】
Mr.he