結果
| 問題 |
No.38 赤青白ブロック
|
| コンテスト | |
| ユーザー |
tottoripaper
|
| 提出日時 | 2014-11-24 02:55:59 |
| 言語 | C++11(廃止可能性あり) (gcc 13.3.0) |
| 結果 |
AC
|
| 実行時間 | 504 ms / 5,000 ms |
| コード長 | 1,389 bytes |
| コンパイル時間 | 724 ms |
| コンパイル使用メモリ | 69,272 KB |
| 実行使用メモリ | 5,248 KB |
| 最終ジャッジ日時 | 2024-12-23 12:40:10 |
| 合計ジャッジ時間 | 13,778 ms |
|
ジャッジサーバーID (参考情報) |
judge4 / judge1 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| other | AC * 27 |
ソースコード
#include <iostream>
#include <vector>
#include <algorithm>
int main(){
int r, b;
std::cin >> r >> b;
std::string S;
std::cin >> S;
std::vector<int> rs, bs;
for(int i=0;i<30;i++){
if(S[i] == 'R'){
rs.push_back(i);
}else if(S[i] == 'B'){
bs.push_back(i);
}
}
int res = 0;
for(int i=0;i<1<<10;i++){
for(int j=0;j<1<<10;j++){
std::vector<int> indices;
for(int k=0;k<10;k++){
if(i >> k & 1){indices.push_back(rs[k]);}
if(j >> k & 1){indices.push_back(bs[k]);}
}
std::sort(indices.rbegin(), indices.rend());
std::string s = S;
for(int index : indices){
s.erase(s.begin() + index);
}
int l = s.size();
bool f = true;
for(int k=0;k<l;k++){
if(s[k] == 'R' && (k-r >= 0 && s[k-r] == 'R' || k+r < l && s[k+r] == 'R')){
f = false;
break;
}else if(s[k] == 'B' && (k-b >= 0 && s[k-b] == 'B' || k+b < l && s[k+b] == 'B')){
f = false;
break;
}
}
if(f){res = std::max(res, l);}
}
}
std::cout << res << std::endl;
}
tottoripaper