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;

namespace AOJ0059
{
    class Program
    {
        public void Proc()
        {
            while (true)
            {
                string input = Console.ReadLine();
                if (string.IsNullOrEmpty(input)) break;
                string[] num = input.Split(' ');

                Point A1 = new Point(num[0], num[1]);
                Point A2 = new Point(num[2], num[3]);
                Point B1 = new Point(num[4], num[5]);
                Point B2 = new Point(num[6], num[7]);

                bool res = checkInterSection(A1, A2, B1, B2);
                if (res)
                {
                    Console.WriteLine("YES");
                } else
                {
                    Console.WriteLine("NO");
                }

            }
        }

        static void Main(string[] args)
        {
            Program prg = new Program();
            prg.Proc();
        }

        public static bool checkInterSection (Point a1, Point a2, Point b1, Point b2)
        {
            if (a1.X > b2.X || a2.X < b1.X)
            {
                return false;
            } else
            {
                if (a1.Y > b2.Y || a2.Y < b1.Y)
                {
                    return false;
                } else
                {
                    return true;
                }
            }
        }
    }

    public struct Point
    {
        public decimal X, Y;

        public Point(string a, string b)
        {
            this.X = decimal.Parse(a);
            this.Y = decimal.Parse(b);
        }
    }
}