難易度評価

難易度を1〜10段階で評価できます。投票はあとから変更・取り消しできます。

難易度(投票) 未投票 (0票)

投票の分布

まだ投票はありません。

  1. Lv.10票
  2. Lv.20票
  3. Lv.30票
  4. Lv.40票
  5. Lv.50票
  6. Lv.60票
  7. Lv.70票
  8. Lv.80票
  9. Lv.90票
  10. Lv.100票

難易度の目安を見る ↗

ログインして難易度を投票

外部サイトへ移動します

リンク先の URL を確認してから開いてください。

別タブで開く

Poisonous Full Course: Renewal

作成者 sevenc_nanashi

難易度(作成者設定) Lv.4

難易度(投票) 未投票 (0票)

実行時間制限
2 秒
メモリ制限
512 MiB

問題文

名無月くんは最近保健所の指導が入ったと聞く毒入りフルコースの店に行くことにしました。この店はリニューアルしており、またそれに伴ってレストランの横には病院が併設されました。

レストランで提供される料理には毒あるいは解毒剤が含まれています。それぞれ以下のような効果を発揮します:

  • 毒 kk(1≤k≤K1 \leq k \leq K)入りの料理を食べると、名無月くんの状態は以下のように変化します:
    • 名無月くんが毒kkを患っていない場合:毒kkを患います。
    • 名無月くんが毒kkを患っている場合:名無月くんはこの料理を食べ終えたあとに倒れ、併設の病院に緊急搬送されます。
      • このとき、毒kkはこの料理を食べた時刻のうちに無料で治療されますが、他の毒は治療されません。
  • 解毒剤 kk(1≤k≤K1 \leq k \leq K)入りの料理を食べると、名無月くんの状態は以下のように変化します:
    • 名無月くんが毒kkを患っていない場合:何も起こりません。
    • 名無月くんが毒kkを患っている場合:毒kkを治療します。

時刻ii(1≤i≤N1 \leq i \leq N)では名無月くんは以下の行動のうち一つを取ることができます:

  • レストランに居るとき、料理iiを食べる。
    • その料理を食べたことにより幸福度AiA_iを獲得します。
    • Xi>0X_i \gt 0 のとき、料理には毒XiX_iが入っています。
    • Xi<0X_i \lt 0 のとき、料理には解毒剤−Xi-X_iが入っています。
  • 病院に居るとき、解毒剤kkを購入して服用する。コストCkC_kがかかり、毒kkを患っている場合は毒kkが治療されます。
  • 病院からレストランに戻る。このとき、毒をすべて治療している必要はありません。
  • 何もしない。もし料理が出されていた場合は、その料理は廃棄されます。

緊急搬送以外の方法でレストランから病院に行く方法はないことに注意してください。また、名無月くんは料理を一瞬で食べ終えることができます。

名無月くんは時刻00の時点でレストランにおり、またどの種類の毒を患っていません。

食べた料理の幸福度から病院で支払ったコストを引いた値を満足度とします。満足度の最大値を求めてください。
なお、全ての行動が終わった時点で病院に居ても構いません。

制約

  • 入力される値はすべて整数
  • 1≤N≤10001 \leq N \leq 1000
  • 1≤K≤81 \leq K \leq 8
  • −K≤Xi≤K-K \leq X_i \leq K、Xi≠0X_i \ne 0
  • −109≤Ai≤109-10^9 \leq A_i \leq 10^9
  • 1≤Ck≤1091 \leq C_k \leq 10^9

入力

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

NKN \quad K A1A2⋯ANA_1 \quad A_2 \quad \cdots \quad A_N X1X2⋯XNX_1 \quad X_2 \quad \cdots \quad X_N C1C2⋯CKC_1 \quad C_2 \quad \cdots \quad C_K

出力

満足度の最大値を出力してください。

サンプル 1

入力

4 1
5 8 6 9
1 -1 1 1
4

出力

28

例えば、以下のように行動することで満足度 2828 を得られます。

  • 時刻 11:料理 11 を食べ、毒 11 を患う。
  • 時刻 22:料理 22 を食べ、毒 11 を治療する。
  • 時刻 33:料理 33 を食べ、再び毒 11 を患う。
  • 時刻 44:料理 44 を食べ、病院に緊急搬送される。

すべての料理を食べているため、これが最大です。

サンプル 2

入力

4 1
10 20 -100 40
1 1 -1 1
50

出力

70

例えば、以下のように行動することで満足度 7070 を得られます。

  • 時刻 11:料理 11 を食べ、毒 11 を患う。
  • 時刻 22:料理 22 を食べ、病院に緊急搬送される。
  • 時刻 33:病院からレストランに戻る。
  • 時刻 44:料理 44 を食べる。

このとき、満足度は 10+20+40=7010+20+40=70 となり、これが最大です。

サンプル 3

入力

7 2
10 10 10 0 0 100 100
1 2 1 -1 -1 2 2
8 5

出力

225

例えば、以下のように行動することで満足度 225225 を得られます。

  • 時刻 11:料理 11 を食べ、毒 11 を患う。
  • 時刻 22:料理 22 を食べ、毒 22 を患う。
  • 時刻 33:料理 33 を食べ、病院に緊急搬送される。このとき、毒 11 のみが治療される。
  • 時刻 44:病院で解毒剤 22 を購入して服用し、毒 22 を治療する。
  • 時刻 55:病院からレストランに戻る。
  • 時刻 66:料理 66 を食べ、毒 22 を患う。
  • 時刻 77:料理 77 を食べ、病院に緊急搬送される。

このとき、満足度は 10+10+10−5+100+100=22510+10+10-5+100+100=225 となり、これが最大です。

サンプル 4

入力

5 1
100 -300 80 70 60
1 -1 1 1 1
12

出力

240

例えば、時刻 1,3,51,3,5 に料理を食べ、それ以外の時刻には何もしないことで、満足度 100+80+60=240100+80+60=240 を得られます。

サンプル 5

入力

5 1
-100 -100 -100 -100 -100
1 -1 1 -1 1
10

出力

0

全ての料理を食べないことが最適です。