結果
| 問題 |
No.1029 JJOOII 3
|
| コンテスト | |
| ユーザー |
vwxyz
|
| 提出日時 | 2024-07-17 04:38:52 |
| 言語 | C++23 (gcc 13.3.0 + boost 1.87.0) |
| 結果 |
TLE
|
| 実行時間 | - |
| コード長 | 906 bytes |
| コンパイル時間 | 989 ms |
| コンパイル使用メモリ | 98,860 KB |
| 実行使用メモリ | 13,752 KB |
| 最終ジャッジ日時 | 2024-07-17 04:39:18 |
| 合計ジャッジ時間 | 26,083 ms |
|
ジャッジサーバーID (参考情報) |
judge2 / judge5 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 3 |
| other | AC * 27 TLE * 3 -- * 8 |
ソースコード
#include <iostream>
#include <vector>
#include <string>
#include <algorithm>
#include <climits>
using namespace std;
int main() {
int N, K;
cin >> N >> K;
vector<string> S(N);
vector<long long> C(N);
for (int i = 0; i < N; ++i) {
cin >> S[i] >> C[i];
}
string JOI(K, 'J');
JOI += string(K, 'O');
JOI += string(K, 'I');
long long inf = 1ll<<60;
vector<long long> dp(3 * K + 1, inf);
dp[0] = 0;
for (int k0 = 0; k0 <= 3 * K; ++k0) {
for (int n = 0; n < N; ++n) {
int k1 = k0;
for (char s : S[n]) {
if (k1 < 3 * K && JOI[k1] == s) {
++k1;
}
}
dp[k1] = min(dp[k1], dp[k0] + C[n]);
}
}
long long ans = dp[3 * K];
if (ans == inf) {
ans = -1;
}
cout << ans << endl;
return 0;
}
vwxyz