結果
| 問題 |
No.38 赤青白ブロック
|
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2014-10-12 23:44:38 |
| 言語 | Java (openjdk 23) |
| 結果 |
AC
|
| 実行時間 | 812 ms / 5,000 ms |
| コード長 | 1,994 bytes |
| コンパイル時間 | 4,134 ms |
| コンパイル使用メモリ | 78,164 KB |
| 実行使用メモリ | 47,832 KB |
| 最終ジャッジ日時 | 2024-12-23 12:35:52 |
| 合計ジャッジ時間 | 23,684 ms |
|
ジャッジサーバーID (参考情報) |
judge3 / judge2 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| other | AC * 27 |
ソースコード
import java.util.Scanner;
public class Yuki038 {
public static void main(String[] args) {
Yuki038 hoge = new Yuki038();
}
Yuki038() {
Scanner scanner = new Scanner(System.in);
int kr = scanner.nextInt();
int kb = scanner.nextInt();
String s = scanner.next();
int ans = 0;
int N = s.length();
int mask = 0;
for (int i = 0; i < N; i++) {
if (s.charAt(i) == 'W') {
mask |= 1 << i;
}
}
StringBuilder t = new StringBuilder();
for (int i = mask; i < (1 << N); i = (i + 1) | mask) {
t.delete(0, t.length() + 1);
for (int j = 0; j < N; j++) {
if (s.charAt(j) == 'W' || (((1 << j) & i) > 0)) {
t.append(s.charAt(j));
}
}
boolean hit = false;
LOOP:
for (int j = 0; j < t.length(); j++) {
if (t.charAt(j) == 'W') {
continue;
}
for (int[] c : new int[][]{{'R', kr}, {'B', kb}}) {
if (t.charAt(j) == c[0]) {
if (j >= c[1]) {
if (t.charAt(j - c[1]) == c[0]) {
hit = true;
break LOOP;
}
}
}
if (t.charAt(j) == c[1]) {
if (j + c[1] < t.length()) {
if (t.charAt(j + c[1]) == c[0]) {
hit = true;
break LOOP;
}
}
}
}
}
if (!hit) {
ans = Math.max(ans, t.length());
}
}
System.out.println(ans);
}
}