結果
| 問題 |
No.38 赤青白ブロック
|
| コンテスト | |
| ユーザー |
uafr_cs
|
| 提出日時 | 2015-06-03 17:11:54 |
| 言語 | Java (openjdk 23) |
| 結果 |
AC
|
| 実行時間 | 401 ms / 5,000 ms |
| コード長 | 1,515 bytes |
| コンパイル時間 | 2,313 ms |
| コンパイル使用メモリ | 77,576 KB |
| 実行使用メモリ | 57,076 KB |
| 最終ジャッジ日時 | 2024-12-23 12:48:28 |
| 合計ジャッジ時間 | 12,028 ms |
|
ジャッジサーバーID (参考情報) |
judge2 / judge4 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| other | AC * 27 |
ソースコード
import java.util.Arrays;
import java.util.LinkedList;
import java.util.Scanner;
public class Main {
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
final int Kr = sc.nextInt();
final int Kb = sc.nextInt();
char[] inputs = sc.next().toCharArray();
int min = Integer.MAX_VALUE;
for(int bit = 0; bit < (1 << 20); bit++){
final int reduced_size = inputs.length - Integer.bitCount(bit);
char[] reduced_inputs = new char[reduced_size];
for(int normal = 0, reduced = 0, count = 0; normal < inputs.length; normal++){
if(inputs[normal] == 'W'){
reduced_inputs[reduced++] = inputs[normal];
continue;
}
final boolean is_ignored = (bit & (1 << (count++))) != 0;
if(is_ignored){
continue;
}else{
reduced_inputs[reduced++] = inputs[normal];
}
}
//System.out.println(Arrays.toString(reduced_inputs));
//sc.next();
boolean ok = true;
for(int i = 0; i < reduced_size; i++){
if(reduced_inputs[i] == 'R'
&& ((i - Kr >= 0 && reduced_inputs[i - Kr] == 'R')
|| (i + Kr < reduced_size && reduced_inputs[i + Kr] == 'R'))){
ok = false;
break;
}else if(reduced_inputs[i] == 'B'
&& ((i - Kb >= 0 && reduced_inputs[i - Kb] == 'B')
|| (i + Kb < reduced_size && reduced_inputs[i + Kb] == 'B'))){
ok = false;
break;
}
}
if(ok){
min = Math.min(min, Integer.bitCount(bit));
}
}
System.out.println(inputs.length - min);
}
}
uafr_cs