結果
| 問題 |
No.291 黒い文字列
|
| コンテスト | |
| ユーザー |
koyopro
|
| 提出日時 | 2015-10-17 15:30:45 |
| 言語 | C++11(廃止可能性あり) (gcc 13.3.0) |
| 結果 |
WA
|
| 実行時間 | - |
| コード長 | 1,226 bytes |
| コンパイル時間 | 1,639 ms |
| コンパイル使用メモリ | 170,404 KB |
| 実行使用メモリ | 13,760 KB |
| 最終ジャッジ日時 | 2024-07-22 10:11:50 |
| 合計ジャッジ時間 | 5,165 ms |
|
ジャッジサーバーID (参考情報) |
judge3 / judge4 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 4 |
| other | AC * 5 WA * 2 TLE * 1 -- * 18 |
ソースコード
#include "bits/stdc++.h"
using namespace std;
#define REP(i, n) for(int i=0; i<(n); i++)
#define RREP(i, n) for(int i=(n-1); i>=0; i--)
#define ALL(a) (a).begin(),(a).end()
#define CONTAIN(a, b) find(ALL(a), (b)) != (a).end()
int N,T;
string S, t;
map<char, int> KU;
int C[5];
int dfs(int n) {
if (n == t.size()) {
//printf("%d, [%d, %d, %d, %d, %d]\n", n, C[0], C[1], C[2], C[3], C[4]);
return C[4];
}
int i = KU[t[n]];
int ret = 0;
if (i == -1) {
REP(j,5) {
if (j && C[j] >= C[j-1]) continue;
C[j]++;
ret = max(ret, dfs(n+1));
C[j]--;
}
} else {
C[i]++;
if (i > 0) C[i] = min(C[i], C[i-1]);
ret = dfs(n + 1);
C[i]--;
}
return ret;
}
signed main()
{
cin >> S;
KU['K'] = 0;
KU['U'] = 1;
KU['R'] = 2;
KU['O'] = 3;
KU['I'] = 4;
KU['?'] = -1;
vector<char> KUROI;
KUROI.push_back('K');
KUROI.push_back('U');
KUROI.push_back('R');
KUROI.push_back('O');
KUROI.push_back('I');
for (auto&& s : S) {
if (CONTAIN(KUROI, s) || s == '?') {
t.push_back(s);
}
}
cout << dfs(0) << endl;
return 0;
}
koyopro