結果

問題 No.38 赤青白ブロック
ユーザー uafr_csuafr_cs
提出日時 2015-06-03 17:11:54
言語 Java21
(openjdk 21)
結果
AC  
実行時間 412 ms / 5,000 ms
コード長 1,515 bytes
コンパイル時間 1,953 ms
コンパイル使用メモリ 77,916 KB
実行使用メモリ 45,936 KB
最終ジャッジ日時 2024-06-06 02:05:07
合計ジャッジ時間 12,630 ms
ジャッジサーバーID
(参考情報)
judge2 / judge1
このコードへのチャレンジ
(要ログイン)

テストケース

テストケース表示
入力 結果 実行時間
実行使用メモリ
testcase_00 AC 362 ms
45,520 KB
testcase_01 AC 324 ms
45,288 KB
testcase_02 AC 317 ms
45,388 KB
testcase_03 AC 301 ms
45,176 KB
testcase_04 AC 327 ms
45,152 KB
testcase_05 AC 345 ms
45,200 KB
testcase_06 AC 326 ms
45,364 KB
testcase_07 AC 358 ms
45,204 KB
testcase_08 AC 376 ms
45,452 KB
testcase_09 AC 411 ms
45,556 KB
testcase_10 AC 354 ms
45,260 KB
testcase_11 AC 377 ms
45,444 KB
testcase_12 AC 342 ms
44,940 KB
testcase_13 AC 410 ms
45,324 KB
testcase_14 AC 321 ms
45,380 KB
testcase_15 AC 374 ms
45,364 KB
testcase_16 AC 319 ms
45,936 KB
testcase_17 AC 354 ms
45,136 KB
testcase_18 AC 412 ms
45,676 KB
testcase_19 AC 353 ms
45,324 KB
testcase_20 AC 332 ms
45,532 KB
testcase_21 AC 337 ms
45,504 KB
testcase_22 AC 372 ms
45,120 KB
testcase_23 AC 344 ms
45,348 KB
testcase_24 AC 309 ms
45,280 KB
testcase_25 AC 343 ms
45,204 KB
testcase_26 AC 313 ms
45,584 KB
権限があれば一括ダウンロードができます

ソースコード

diff #

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);
	}
	
}
0