メルカリ競プロコンテスト2024
コンテスト日時
2024/10/05 (Sa) 13:45 - 15:45

G - ハロ2

Flavor
2
s
1024
MB
550

問題文

$1$ 次元空間上で $N$ 個の仕事の募集があります。 $i$ 個目の仕事は座標 $x_i$ で $d_i$ 日目に募集され、その仕事を行うことで $c_i$ 円の報酬を受け取ることができます。 なお、 $d_i$ 日目に募集されたバイトは $d_i$ 日目以外に行うことはできません。
あなたは $1$ 日目に座標 $1$ にいて、 $i$ 日目 $(1 \leq i \leq M)$ には以下の行動をします。

  • 現在いる座標で $i$ 日目に募集された仕事があれば、その仕事を行う。条件を満たす仕事の募集がなければ何もしない。
  • 現在いる座標を $x$ とすると $x - 1, x, x + 1$ のいずれかに移動し $i$ 日目の行動を終了する。

最適な行動をとったとき $M$ 日目の行動終了時までに最大で何円報酬を受け取ることができるか出力してください。

制約

  • 入力は全て整数
  • $1 \leq N,M \leq 100{,}000$
  • $1 \leq d_i \leq M$
  • $1 \leq x_i, c_i \leq 100{,}000$
  • $i \neq j$ ならば $(x_i, d_i) \neq (x_j, d_j)$

入力

入力は以下の形式で与えられる。

$N$ $M$
$x_1$ $d_1$ $c_1$
$x_2$ $d_2$ $c_2$
$\dots$
$x_N$ $d_N$ $c_N$

出力

答えを整数として出力せよ。
なお、答えが $32$ bit 整数に収まらないことがある事に注意してください。

入力例 1
4 5 3 1 2 2 3 3 1 5 2 1 1 1
出力例 1
6
入力例 2
3 100000 1 2 2 9999 9999 100000 100000 100000 100000
出力例 2
200000
入力例 3
2 2 2 1 2 3 2 3
出力例 3
0
提出
C++23 (g++ 12.2.0)