結果
問題 | No.38 赤青白ブロック |
ユーザー |
![]() |
提出日時 | 2019-06-30 22:07:02 |
言語 | C (gcc 13.3.0) |
結果 |
AC
|
実行時間 | 111 ms / 5,000 ms |
コード長 | 685 bytes |
コンパイル時間 | 889 ms |
コンパイル使用メモリ | 29,696 KB |
実行使用メモリ | 5,376 KB |
最終ジャッジ日時 | 2024-07-06 21:53:48 |
合計ジャッジ時間 | 3,857 ms |
ジャッジサーバーID (参考情報) |
judge1 / judge3 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
other | AC * 27 |
ソースコード
// yukicoder: No.38 赤青白ブロック // 2019.6.30 bal4u #include <stdio.h> #define ST 35 #define LIM (1<<20) int kr, kb; char S[32], s[70]; int main() { int i, j, w, ans; char *p, *q; scanf("%d%d", &kr, &kb); scanf("%s", S); ans = 0; i = LIM; while (i--) { j = i, p = S, q = s + ST, w = 0; while (*p) { while (*p == 'W') *q++ = 'W', w++, p++; if (*p == 'R') { if (j & 1) { if (*(q-kr) == 'R') goto done; *q++ = 'R'; } } else { if (j & 1) { if (*(q-kb) == 'B') goto done; *q++ = 'B'; } } if (!(j >>= 1)) break; p++; } q += 10 - w; if (q-s > ans) ans = q-s; done:; } printf("%d\n", ans-ST); return 0; }