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



import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Scanner;
 

public class Main{
          
     
     public static void main(String args[]){
         BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
         
         try{
             String line;
            
             while((line=br.readLine())!= null){//if(line.isEmpty())break;
                String[] spl=line.split(" ");
                double xa1=Double.parseDouble(spl[0]);
                double ya1=Double.parseDouble(spl[1]);
                double xa2=Double.parseDouble(spl[2]);
                double ya2=Double.parseDouble(spl[3]);
                double xb1=Double.parseDouble(spl[4]);
                double yb1=Double.parseDouble(spl[5]);
                double xb2=Double.parseDouble(spl[6]);
                double yb2=Double.parseDouble(spl[7]);

               if(ya1<yb1&&ya1<yb2&&ya2<yb1&&ya2<yb2)System.out.println("NO");
               else if(ya1>yb1&&ya1>yb2&&ya2>yb1&&ya2>yb2)System.out.println("NO");
               else if(xa1>xb1&&xa1>xb2&&xa2>xb1&&xa2>xb2)System.out.println("NO");
               else if(xa1<xb1&&xa1<xb2&&xa2<xb1&&xa2<xb2)System.out.println("NO");
               else System.out.println("YES");
                
                /*if((yb-ya)*(yd-yc)==-1*(xb-xa)*(xd-xc)    )// dy1/dx1 * dy2/dx2 = -1 -> dy1*dy2 = -dx1*dx2
                 System.out.println("YES");
                else System.out.println("NO");
                 */
                
             }br.close();
             
         }catch(Exception e){e.printStackTrace();}         
     }
   
 }