TeraCoder2025
コンテスト日時
2025/12/27 (Sa) 14:00 - 15:30

K - Deadline

Assam
2
s
1024
MB
200

問題文

限界開発者である寺子さんは、現在 $N$ 個のタスクを抱えており、精神的・体力的な限界を迎えています。

これから $3$ つの締め切り $S_1, S_2, S_3$ が順番に訪れます。
それぞれの締め切りは、現在時刻 $0$ から見て $T_1, T_2, T_3$ 分後です($T_1 \le T_2 \le T_3$)。

各タスク $i$ ($1 \leq i \leq N$) には、以下の3つの情報が与えられます:

  1. 所要時間 $C_i$:完了するのにかかる時間。

  2. 重要度 $V_i$:完了した際に得られるスコア。

  3. 区分 $K_i$:どの締め切りに関連するタスクか($1, 2, 3$ のいずれか)。

寺子さんはいくつかのタスクを諦め合計スコアを最大化することにしました。合計スコアはこなしたタスクのの重要度 $V_i$ の総和です。以下の条件を満たすようにタスクをこなした時の合計スコアを最大化してください。

  1. 区分 1 のタスクは時刻 $T_1$ の時点で、完了していなければスコアは獲得できません。

  2. 区分 2 のタスクは時刻 $T_2$ の時点で、完了していなければスコアは獲得できません。

  3. 区分3 のタスクは時刻 $T_3$ の時点で、完了していなければスコアは獲得できません。

ただし、タスクは同時に一つしかできません。また、タスクが終了すると同時に新しいタスクを開始できます。

制約

  • $1\le N\le 100$
  • $1\le T_1\le T_2\le T_3\le 10^5$
  • $1\le C_i\le 100$
  • $1\le V_i\le 10^5$
  • $K_i \in {1, 2, 3}$
  • 入力はすべて整数

入力

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

$N$

$T_1~~T_2$$~~T_3$

$C_1~~V_1$$~~K_1$

$C_2~~V_2$$~~K_2$

$\vdots$

$C_n~~V_n$$~~K_n$

出力

ありえるスコアの最大値を出力せよ。

入力例 1
4 10 20 40 8 50 1 15 70 2 15 80 2 25 100 3
出力例 1
180

最初に3番目のタスクを行い、残りの25分で4番目のタスクを行った時、スコアが180となり、これが最大です。

入力例 2
3 30 60 90 30 30 1 30 30 2 30 30 3
出力例 2
90

全てのタスクを実行できる時もあります。

入力例 3
3 1 2 3 10 100 1 20 200 2 30 300 3
出力例 3
0

一つもタスクを実行できないこともあります。

入力例 4
3 10 20 30 20 100 3 9 100 1 1 100 1
出力例 4
300

例えば、タスクを $2 \to 3 \to 1$ の順に実行することで全てのタスクを完了できます。

提出
C++23 (g++ 12.2.0)