結果
| 問題 |
No.38 赤青白ブロック
|
| コンテスト | |
| ユーザー |
myanta
|
| 提出日時 | 2017-05-04 19:48:07 |
| 言語 | C++11(廃止可能性あり) (gcc 13.3.0) |
| 結果 |
WA
|
| 実行時間 | - |
| コード長 | 804 bytes |
| コンパイル時間 | 343 ms |
| コンパイル使用メモリ | 39,168 KB |
| 実行使用メモリ | 6,948 KB |
| 最終ジャッジ日時 | 2024-09-14 07:14:13 |
| 合計ジャッジ時間 | 5,539 ms |
|
ジャッジサーバーID (参考情報) |
judge2 / judge5 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| other | AC * 25 WA * 2 |
ソースコード
#include<cstdio>
#include<vector>
using namespace std;
using s_t=vector<int>;
int kr, kb;
int max_u(int& m, int v)
{
if(m<v)
{
m=v;
return 1;
}
return 0;
}
int solve(s_t& s)
{
int i, f, is_ok=1, ret=0;
s_t w;
for(i=0;i<s.size();i++)
{
f=0;
if(s[i]=='R')
{
if(i+kr<s.size() && s[i+kr]=='R') f=1;
if(i-kr>=0 && s[i-kr]=='R') f=1;
}
if(s[i]=='B')
{
if(i+kb<s.size() && s[i+kb]=='B') f=1;
if(i-kb>=0 && s[i-kb]=='B') f=1;
}
if(f)
{
is_ok=0;
w=s;
w.erase(w.begin()+i);
max_u(ret, solve(w));
}
}
if(is_ok) return s.size();
return ret;
}
int main(void)
{
char cs[30+2];
s_t s;
while(scanf("%d%d%s", &kr, &kb, cs)==3)
{
s.clear();
for(int i=0;cs[i];i++)
{
s.push_back(cs[i]);
}
printf("%d\n", solve(s));
}
return 0;
}
myanta