torus711 のアレ

主に競技プログラミングの問題について書きます

Codeforces #174, Division 2, B : Cows and Poker Game

概要

n 匹の牛がポーカーをしている。
現在のベットでは、各プレイヤーの状態は "ALLIN", "IN", "FOLDED" のいずれかであり変更されない。
緊張感を増すため、"FOLDED" でないプレイヤーは手札を公開するかもしれない。
ただし、他のプレイヤーの選択に影響を与えない限りに於いてであり、全ての外のプレイヤーの状態が "ALLIN" か "FOLDED" のいずれかの場合に限られる。
更に、本人の状態は "ALLIN" か "IN" でなければならない。
現在のベットに於ける各プレイヤーの状態が与えられるので、このようなプレイヤーの数を求めよ。

解法

次のように場合分けされます

  • "IN" がいない → "ALLIN" の数
  • "IN" が一人 → 1
  • それ以外 → 0

コード

#define ALL( c ) (c).begin(), (c).end()

int main()
{
	cin.tie( 0 );
	ios::sync_with_stdio( false );

	int n;
	cin >> n;

	string str;
	cin >> str;

	int numI = count( ALL( str ), 'I' );
	if ( numI == 0 )
	{
		cout << count( ALL( str ), 'A' ) << endl;
	}
	else
	{
		cout << ( numI == 1 ? 1 : 0 ) << endl;
	}

	return 0;
}