SRM514 Div1 Easy(250) MagicalGirlLevelOneDivOne

MagicalGirlLevelOneDivOne

(n,1), (-n,1)と跳ぶことで、上下左右に2マス移動することができるので、(偶,偶), (偶,奇), (奇,偶), (奇,奇)のマスに行くことが可能か考えれば良い。初期位置なので、(偶,偶)は可能。nが偶数ならば(1,n)→(1,n)、nが奇数ならば(1,n)と跳ぶことで、(奇,奇)も可能。(遇,奇)と(奇,遇)はnが偶数ならば可能だが、奇数の場合は不可能。

#include <string>
#include <vector>
using namespace std;

class MagicalGirlLevelOneDivOne{public:
string isReachable( vector <int> jumpTypes, int x, int y )
{
    bool f = false;
    for ( int i=0; i<(int)jumpTypes.size(); i++ )
        if ( jumpTypes[i]%2 == 0 )
            f = true;

    return f || (x+y)%2==0 ? "YES" : "NO";
}};