はまやんはまやんはまやん

hamayanhamayan's blog

Leapfrog: Ch. 1 [Facebook Hacker Cup 2019 Qualification Round A]

https://www.facebook.com/hackercup/problem/656203948152907/
提出先

解説

https://codeforces.com/gym/102249/submission/55747583

A以降のマスの個数をn, 最小限必要なBの個数をbとすると、以下のような表になる。

n    b
2    1
3    2
4    2
5    3
6    3

これをみると、n/2の切り上げが最小限必要な個数となっている。
よって、それよりBの個数が少ないならN, N=1のときはどうやっても無理なのでN。
あと、A以降のマスが全てBで埋まっている場合もN。
それ以外はYになる。

string S;
//---------------------------------------------------------------------------------------------------
#define yes "Y"
#define no "N"
string solve() {
	cin >> S;

	int n = S.length() - 1;

	int b = 0;
	fore(c, S) if (c == 'B') b++;

	if (n == 1) return no;
	if (b == n) return no;
	if (b < (n + 1) / 2) return no;
	return yes;
}
//---------------------------------------------------------------------------------------------------
void _main() {
	int T; cin >> T;
	rep(t, 0, T) printf("Case #%d: %s\n", t + 1, solve().c_str());
}