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 C# (judge verdict: Accepted)

using System;
using System.Text;
using System.Collections.Generic;

namespace AOJ2
{
    class Program
    {
        class Point
        {
            public double x;
            public double y;

            public Point(double X, double Y)
            {
                this.x = X;
                this.y = Y;
            }

        }


        static void Main(string[] args)
        {
            List<string> resultList = new List<string>();

            string input;
            while ((input = Console.ReadLine()) != null)
            {
                string[] inputArray = input.Split(' ');
                Point A1 = new Point(double.Parse(inputArray[0]), double.Parse(inputArray[1]));
                Point A2 = new Point(double.Parse(inputArray[2]), double.Parse(inputArray[3]));
                Point B1 = new Point(double.Parse(inputArray[4]), double.Parse(inputArray[5]));
                Point B2 = new Point(double.Parse(inputArray[6]), double.Parse(inputArray[7]));

                if (A1.x >= B1.x && A1.y <= B1.y)
                {
                    if (B2.x >= A1.x && B1.y <= A2.y)
                    {
                        resultList.Add("YES");
                    }
                    else
                    {
                        resultList.Add("NO");
                    }
                }
                else if (A1.x <= B1.x && A1.y <= B1.y)
                {
                    if (B1.x <= A2.x && B1.y <= A2.y)
                    {
                        resultList.Add("YES");
                    }
                    else
                    {
                        resultList.Add("NO");
                    }
                }
                else if (A1.x >= B1.x && A1.y >= B1.y)
                {
                    if (B2.x >= A1.x && B2.y >= A1.y)
                    {
                        resultList.Add("YES");
                    }
                    else
                    {
                        resultList.Add("NO");
                    }
                }
                else
                {
                    if (B1.x <= A2.x && B2.y >= A1.y)
                    {
                        resultList.Add("YES");
                    }
                    else
                    {
                        resultList.Add("NO");
                    }
                }

            }

            foreach (string s in resultList)
            {
                Console.WriteLine(s);
            }


        }


        
    }
}