torus711 のアレ

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

TopCoder SRM 572, Division 2, Level 1 : EasyHomework

概要

与えられた数列の積の符号を求めよ。

解法

0 が一つでもあれば、"ZERO"、負数が奇数個あれば "NEGATIVE"、それ以外は "POSITIVE" です。

コード

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

class EasyHomework
{
public:
	string determineSign( vector <int> A )
	{
		if ( 1 <= count( ALL( A ), 0 ) )
		{
			return "ZERO";
		}
		else if ( count_if( ALL( A ), bind2nd( less<int>(), 0 ) ) % 2 )
		{
			return "NEGATIVE";
		}
		else
		{
			return "POSITIVE";
		}
	}
};