Problem:
長方形の重なり

底辺が x 軸に対して平行な 2 つの長方形があります。長方形 A の左下の座標 (xa1, ya1) と右上の座標 (xa2, ya2)、長方形 B の左下の座標 (xb1, yb1) と右上の座標 (xb2, yb2) を読み込んで、長方形 A と長方形 B が一部でも重なっていれば YES を、まったく重なっていなければ NO を出力するプログラムを作成してください。ただし、長方形 A と長方形 B は同じものではないとします。また、接しているものも重なっているとみなします。

Input

複数のデータセットが与えられます。各データセットの形式は以下のとおりです。

xa1 ya1 xa2 ya2 xb1 yb1 xb2 yb2

入力される値はそれぞれ -2,000 以上 2,000 以下であり、各値は小数点以下最大 5 桁までの数字を含む実数で与えられます。

データセットの数は 50 を超えません。

Output

各データセットに対して、YES または NO を１行に出力して下さい。

Sample Input

0.0 0.0 5.0 5.0 1.0 1.0 4.0 4.0
0.0 0.0 4.0 5.0 1.0 1.0 5.0 5.0
0.0 0.0 4.0 4.0 -3.0 -5.0 2.0 -1.0

Output for the Sample Input

YES
YES
NO

Solution in Ruby (judge verdict: Accepted)

def inner?(x,y,l1x,l1y,l2x,l2y)
  return true if x.between?(l1x,l2x) and y.between?(l1y,l2y)
  return false
end

while gets
  xa1,ya1,xa2,ya2,xb1,yb1,xb2,yb2=$_.split.map(&:to_f)
  if inner?(xa1,ya1,xb1,yb1,xb2,yb2) or inner?(xa1,ya2,xb1,yb1,xb2,yb2) or inner?(xa2,ya1,xb1,yb1,xb2,yb2) or inner?(xa2,ya2,xb1,yb1,xb2,yb2) or
     inner?(xb1,yb1,xa1,ya1,xa2,ya2) or inner?(xb1,yb2,xa1,ya1,xa2,ya2) or inner?(xb2,yb1,xa1,ya1,xa2,ya2) or inner?(xb2,yb2,xa1,ya1,xa2,ya2) or
     (xa1<xb1 and xa2>xb2 and ya1>yb1 and ya2<yb2) or (xa1>xb1 and xa2<xb2 and ya1<yb1 and ya2>yb2) then
    puts "YES"
  else
    puts "NO"
  end
end