結果
問題 | No.204 ゴールデン・ウィーク(2) |
ユーザー |
![]() |
提出日時 | 2015-06-20 02:08:44 |
言語 | Java (openjdk 23) |
結果 |
AC
|
実行時間 | 134 ms / 1,000 ms |
コード長 | 1,358 bytes |
コンパイル時間 | 2,463 ms |
コンパイル使用メモリ | 78,116 KB |
実行使用メモリ | 41,564 KB |
最終ジャッジ日時 | 2024-12-24 11:47:55 |
合計ジャッジ時間 | 9,184 ms |
ジャッジサーバーID (参考情報) |
judge5 / judge4 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 46 |
ソースコード
import java.util.ArrayList; import java.util.Arrays; import java.util.HashSet; import java.util.LinkedHashMap; import java.util.LinkedList; import java.util.Scanner; import java.util.Set; import java.util.TreeSet; public class Main { public static final int SIZE = 14; public static void main(String[] args) { Scanner sc = new Scanner(System.in); final int D = sc.nextInt(); boolean[] days = new boolean[SIZE]; for (int i = 0; i < 2; i++) { char[] inputs = sc.next().toCharArray(); for (int j = 0; j < SIZE / 2; j++) { days[i * (SIZE / 2) + j] = inputs[j] == 'o'; } } int max = 0; for (int d = 0; d <= D; d++) { POS: for (int start = 0; start <= 3 * SIZE - D; start++) { boolean[] new_days = new boolean[3 * SIZE]; System.arraycopy(days, 0, new_days, SIZE, SIZE); for(int i = 0; i < d; i++){ if(new_days[start + i]){ continue POS; } } for (int i = 0; i < d; i++) { new_days[start + i] = true; } int prev = -1; for (int cur = 0; cur < new_days.length; cur++) { if (!new_days[cur] && prev >= 0) { max = Math.max(max, cur - prev); prev = -1; } if (new_days[cur] && prev < 0) { prev = cur; } } if (prev >= 0) { max = Math.max(max, new_days.length - prev); } } } System.out.println(max); } }