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

hamayanhamayan's blog

Jumping!! [技術室奥プログラミングコンテスト#4 Day2 A]

https://atcoder.jp/contests/tkppc4-2/tasks/tkppc4_2_a

解説

https://atcoder.jp/contests/tkppc4-2/submissions/7031891

操作を見ると、y座標は+2するしかないので、yが負の場合は達成できない。
目標のy座標の上限が105なので、多くても105/2回くらいしか操作できない。
よって、シミュレーションしてみよう。
x座標は-1か+1かどちらかであるが、目標のx座標により近い方に貪欲に選択していけばいい。

int x, y;
//---------------------------------------------------------------------------------------------------
int solve() {
    if (y < 0) return -1;
    int ans = 0;
    int xx = 0, yy = 0;
    while(yy < y) {
        ans++;
        if(xx < x) xx++;
        else xx--;
        yy += 2;
    }
    if(xx != x or yy != y) return -1;
    return ans;
}
//---------------------------------------------------------------------------------------------------
void _main() {
    cin >> x >> y;
    cout << solve() << endl;
}