WARush

SRMの結果とか、解けた問題のコードを書いていきます

Codeforces #176 Div2 A "IQ Test"

問題

http://codeforces.com/contest/287/problem/A

白黒に塗られている4 * 4のタイルがある。
あと1つのタイルを塗り替える事によってどこかの2 * 2の部分を
1色だけにすることができるかを返せ。
もちろん塗り替えなくても既に出来てるならばそれでよい。

考えた事

全ての2 * 2の部分を見ていって白黒のどちらかが3つ以上あればよい

ソースコード

bool isBlack[4][4];

int main() {
    for( int y = 0; y < 4; y++ ){
        for( int x = 0; x < 4; x++ ){
            char c;
            cin >> c;
            isBlack[y][x] = (c == '#' ? true : false );
        }
    }

    bool res = false;
    for( int y = 0; y < 3; y++ ){
        for( int x = 0; x < 3; x++ ){
            int b = 0, w = 0;
            for( int dy = 0; dy <= 1; dy++ ){
                for( int dx = 0; dx <= 1; dx++ ){
                    if( isBlack[y+dy][x+dx] ){
                        b++;
                    }else{
                        w++;
                    }
                }
            }
            if( b >= 3 || w >= 3 ){
                res = true;
            }
        }
    }

    cout << (res ? "YES" : "NO") << endl;
}