けんちょんの競プロ精進記録

競プロの精進記録や小ネタを書いていきます

AtCoder ABC 056 B - NarrowRectanglesEasy (6Q, 灰色, 200 点)

ちょっと幾何チックな問題

問題概要

考えたこと

この手の問題では、 a, b の大小関係が定まっていると考えやすい。そして、 a \lt b でも  a \gt b でも、どちらでも一般性を失わないので、 a \lt b として考えよう。

このとき、次のように整理できる。

  •  a + W \ge b ならば:すでに連結なので、答えは 0
  •  a + W \lt b ならば:連結にするのに動かす必要量は  b - (a + W)

あとは、これを実装すれば AC となる。

コード

#include <bits/stdc++.h>
using namespace std;

int main() {
    int W, a, b;
    cin >> W >> a >> b;
    if (a > b) swap(a, b);

    if (a + W >= b) cout << 0 << endl;
    else cout << b - (a + W) << endl;
}