ferinの競プロ帳

競プロについてのメモ

SRM730 div2 easy IntervalIntersections

概要

区間[x1,y1]、[x2,y2]が与えられる。この区間どちらとも共通部分を持つような最小の区間の長さを求めろ。

考えたこと

  • 間の区間を取るかそもそも区間が被っているかのどっちか
  • x1 < x2 と x2 > x1 で場合分けすればいいね
  • x1の方が右ならx1-y2かすでに区間を共通していて0
  • x1の方が左ならx2-y1かすでに区間を共通していて0
  • 場合分けして求める
class IntervalIntersections {
   public:
   int minLength(int x1, int y1, int x2, int y2)
  {
    if(x1 < x2) {
      return max(x2-y1, 0);
    } else {
      return max(0, x1-y2);
    }
  }
};