結果
問題 |
No.1029 JJOOII 3
|
ユーザー |
![]() |
提出日時 | 2022-02-16 14:39:14 |
言語 | PyPy3 (7.3.15) |
結果 |
WA
|
実行時間 | - |
コード長 | 1,626 bytes |
コンパイル時間 | 160 ms |
コンパイル使用メモリ | 82,048 KB |
実行使用メモリ | 80,920 KB |
最終ジャッジ日時 | 2024-06-29 07:16:08 |
合計ジャッジ時間 | 7,116 ms |
ジャッジサーバーID (参考情報) |
judge2 / judge5 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 36 WA * 2 |
ソースコード
N,K = map(int,input().split()) CS = [] for _ in range(N): s,c = input().split() CS.append([int(c),list(s)]) inf =10**18 DPJ = [inf]*(K+1) DPO = [inf]*(K+1) DPI = [inf]*(K+1) DPJ[0] = 0 for c,S in CS: cnt = S.count('J') if cnt==0: continue for i in range(K): if DPJ[i]!=inf: if i+cnt>=K: J=i O=0 I=0 for s in S: if J<K and s=='J': J+=1 if J>=K and s=='O': O+=1 if O>=K and s=='I': I+=1 if O>=K: DPI[min(K,I)]=min(DPJ[i]+c,DPI[min(K,I)]) elif J>=K: DPO[O]=min(DPJ[i]+c,DPO[O]) elif DPJ[i+cnt]>DPJ[i]+c: DPJ[i+cnt]=DPJ[i]+c for c,S in CS: cnt = S.count('O') if cnt==0: continue for i in range(K): if DPO[i]!=inf: if i+cnt>=K: O=i I=0 for s in S: if s=='O': O+=1 if O>=K and s=='I': I+=1 if O>=K: DPI[min(K,I)]=min(DPO[i]+c,DPI[min(K,I)]) elif DPO[i+cnt]>DPO[i]+c: DPO[i+cnt]=DPO[i]+c for c,S in CS: cnt = S.count('I') if cnt==0: continue for i in range(K): if DPI[i]!=inf: if DPI[min(K,i+cnt)]>DPI[i]+c: DPI[min(K,i+cnt)]=DPI[i]+c if DPI[-1]==inf: print(-1) else: print(DPI[-1])