結果
問題 | No.38 赤青白ブロック |
ユーザー | Mister |
提出日時 | 2020-08-27 17:29:06 |
言語 | C++17 (gcc 13.3.0 + boost 1.87.0) |
結果 |
AC
|
実行時間 | 430 ms / 5,000 ms |
コード長 | 1,058 bytes |
コンパイル時間 | 683 ms |
コンパイル使用メモリ | 74,116 KB |
最終ジャッジ日時 | 2025-01-13 15:22:55 |
ジャッジサーバーID (参考情報) |
judge3 / judge3 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
other | AC * 27 |
ソースコード
#include <iostream> #include <algorithm> #include <vector> #include <string> bool judge(const std::string& s, int kr, int kb) { int n = s.length(); for (int i = 0; i < n; ++i) { switch (s[i]) { case 'R': if (i + kr < n && s[i + kr] == 'R') return false; break; case 'B': if (i + kb < n && s[i + kb] == 'B') return false; break; } } return true; } void solve() { int kr, kb; std::string s; std::cin >> kr >> kb >> s; int ans = 0; for (int b = 0; b < (1 << 20); ++b) { std::string t; int itr = 0; for (char c : s) { if (c == 'R' || c == 'B') { if ((b >> itr++) & 1) continue; } t.push_back(c); } if (!judge(t, kr, kb)) continue; ans = std::max(ans, (int)t.length()); } std::cout << ans << "\n"; } int main() { std::cin.tie(nullptr); std::ios::sync_with_stdio(false); solve(); return 0; }