はまやんはまやんはまやん

hamayanhamayan's blog

Bishop [パナソニックプログラミングコンテスト2020 B]

https://atcoder.jp/contests/panasonic2020/tasks/panasonic2020_b

問題文をみると、半分くらいのマスは移動できそうな感じがある。
なので、HW/2をベースに考えていこう。
小さいケースで見てみると、HWが奇数なら答えが1つ増える。
切り捨て分が答えになるためである。

…で出すとWA。
さすが、rngさん問題。ただでは通さない。
HかWが1の場合は全く動かすことができないので、答えは1になる。
これに気づくのは難しいと感じるかもしれないが、コーナーケースを探すときの初手は最も小さいパターンである。
まずは、小さいケースで考えてみよう。

解説

https://atcoder.jp/contests/panasonic2020/submissions/10894775

ll H, W;
//---------------------------------------------------------------------------------------------------
void _main() {
    cin >> H >> W;

    if (H == 1 or W == 1) {
        cout << 1 << endl;
        return;
    }

    ll ans = H * W / 2;
    if ((H * W) % 2 == 1) ans++;

    cout << ans << endl;
}