#abc217h. [abc217_h]Snuketoon

[abc217_h]Snuketoon

问题描述

在一款名为Snuketoon的游戏中,由AtCoder, Inc.开发,玩家扮演Snuke来躲避水枪喷射的水。

该平台由一个无限数线组成,在游戏开始时,Snuke位于点0。
从游戏开始时,Snuke每秒可以进行以下三种移动之一:向负方向移动1个单位,向正方向移动1个单位,或保持静止。更正式地说,如果Snuke在游戏开始后的t秒(t≥0,t为整数)处于位置p,则在t+1秒时他的位置可能是p-1、p或p+1。

Snuke会因为被水枪浸湿而受到伤害。水枪会射击N次,第i次射击由Ti、Di和Xi表示。

  • 在游戏开始后的Ti秒,水从左侧或右侧射出。设此时Snuke的位置为p。如果他在特定范围内,他将承受以下伤害。
    • 当Di = 0时,如果他处于范围p<Xi,则承受X i - p点的伤害。
    • 当Di = 1时,如果他处于范围Xi<p,则承受p - X i点的伤害。

职业玩家Takahashi希望最小化Snuke在第N次射击结束后所受的总伤害,以在游戏中发布一条推文。找出玩游戏时Snuke所受的总伤害的最小值。

约束条件

  • 1≤N≤2×10^5
  • 1≤T1<T2<⋯<TN≤10^9
  • Di(1≤i≤N)为0或1。
  • −10^9≤Xi≤10^9(1≤i≤N)
  • 输入中所有值均为整数。

输入

输入以以下格式从标准输入给出:

N T1 D1 X1 T2 D2 X2 ⋮ TN DN XN

输出

打印玩游戏时Snuke所受的伤害点数。


示例输入1

3
1 0 3
3 1 0
4 0 6

示例输出1

7

为了方便起见,设t表示从游戏开始算起的秒数。Snuke到达所有射击结束的最佳行动如下。

  • 当t = 0时,Snuke位于点0。他向正方向移动1个单位。
  • 当t = 1时,Snuke位于点1,并从第一次射击中承受2点伤害。他向负方向移动1个单位。
  • 当t = 2时,Snuke位于点0。他保持静止。
  • 当t = 3时,Snuke位于点0,并且第二次射击不会给他带来任何伤害。他向正方向移动1个单位。
  • 当t = 4时,Snuke位于点1,并从第三次射击中承受5点伤害。

这里,Snuke总共受到7点伤害,因此应该打印7。


示例输入2

3
1 0 1
6 1 1
8 0 -1

示例输出2

0

示例输入3

5
1 0 1000000000
2 1 -1000000000
3 0 1000000000
4 1 -1000000000
5 0 1000000000

示例输出3

4999999997