CODE FESTIVAL 2017 qual A: B - fLIP

,

http://code-festival-2017-quala.contest.atcoder.jp/tasks/code_festival_2017_quala_b

最近競プロを始めた友人はここで詰まっていた。 解けるだろうのに勘違いで落としたようで、後から解法聞いて「なんか悔しいので以降の予選も受けます」って言ってたので将来有望ぽい。

solution

行内や列内での位置は無視できるので、$R$行$C$列反転させると決まれば黒いマスの数が分かる。 $O(HW)$で総当たりすればよい。

implementation

#include <cstdio>
#define repeat(i, n) for (int i = 0; (i) < int(n); ++(i))
int main() {
    int h, w, k; scanf("%d%d%d", &h, &w, &k);
    bool result = false;
    repeat (y, h + 1) {
        repeat (x, w + 1) {
            if (y * w + x * h - 2 * y * x == k) {
                result = true;
            }
        }
    }
    printf("%s\n", result ? "Yes" : "No");
    return 0;
}