1 solutions

  • 0
    @ 2025-11-5 18:06:20

    Java :

    import java.util.Scanner;
    
    
    public class Main {
     public static void main(String[] args)
     {
    	 Scanner cin=new Scanner(System.in);
    	 int N=cin.nextInt();long[][] tt=new long[N][8];
    	 for(int i=0;i<N;i++)
    	 {
    		 tt[i][0]=cin.nextInt();
    		 tt[i][1]=cin.nextInt();
    		 tt[i][2]=cin.nextInt();
    		 tt[i][3]=cin.nextInt();
    		 
    		 tt[i][4]=cin.nextInt();
    		 tt[i][5]=cin.nextInt();
    		 tt[i][6]=cin.nextInt();
    		 tt[i][7]=cin.nextInt();
    	 }
    	 for(int i=0;i<N;i++)
    	 {
    		 long ax1=tt[i][0];
    		 long ay1=tt[i][1];
    
    		 
    		 long bx1=tt[i][2];
    		 long by1=tt[i][3];
    		 
    		 long ax2=tt[i][4];
    		 long ay2=tt[i][5];
    		 
    		 long bx2=tt[i][6];
    		 long by2=tt[i][7];
    		 
    		 long minax,minay,maxax,maxay,minbx,minby,maxbx,maxby;
    		 long subx1,subx2,subx,suby1,suby2,suby;
    		 if(ax1>ax2)
    		 {
    			 maxax=ax1;
    			 minax=ax2;
    		 }
    		 else
    		 {
    			 maxax=ax2;
    			 minax=ax1;
    		 }
    		 if(ay1>ay2)
    		 {
    			 maxay=ay1;
    			 minay=ay2;
    		 }
    		 else
    		 {
    			 maxay=ay2;
    			 minay=ay1;
    		 }
    		 
    		 if(bx1>bx2)
    		 {
    			 maxbx=bx1;
    			 minbx=bx2;
    		 }
    		 else
    		 {
    			 maxbx=bx2;
    			 minbx=bx1;
    		 }
    		 
    		 if(by1>by2)
    		 {
    			 maxby=by1;
    			 minby=by2;
    		 }
    		 else
    		 {
    			 maxby=by2;
    			 minby=by1;
    		 }
    		 
    		 if(maxax<=minbx||minax>=maxbx||maxay<=minby||minay>=maxby)
    		 {
    			 System.out.println(Math.abs(ax2-ax1)*Math.abs(ay2-ay1)+Math.abs(bx2-bx1)*Math.abs(by2-by1));
    		 }
    		 else
    		 {
    			 if(minax>=minbx&&maxax<=maxbx)
    			 {
    				 subx=Math.abs(ax2-ax1);
    			 }
    			 else if(minbx>=minax&&maxbx<=maxax)
    			 {
    				 subx=Math.abs(bx2-bx1);
    			 }
    			 else
    			 {
    			 
    			 subx1=Math.abs(maxax-minbx);
    			 subx2=Math.abs(maxbx-minax);
    			 if(subx1<subx2)
    			 {
    				 subx=subx1;
    			 }
    			 else
    			 {
    				 subx=subx2;
    			 }
    			 }
    			 
    			 
    			 if(minay>=minby&&maxay<=maxby)
    			 {
    				 suby=Math.abs(ay2-ay1);
    			 }
    			 else if(minby>=minay&&maxby<=maxay)
    			 {
    				 suby=Math.abs(by2-by1);
    			 }
    			 else{
    			 
    			 
    			 suby1=Math.abs(maxay-minby);
    			 suby2=Math.abs(maxby-minay);
    			 if(suby1<suby2)
    			 {
    				 suby=suby1;
    			 }
    			 else
    			 {
    				 suby=suby2;
    			 }
    			 }
    			 System.out.println(Math.abs(ax2-ax1)*Math.abs(ay2-ay1)+Math.abs(bx2-bx1)*Math.abs(by2-by1)-subx*suby);
    		 }
    	
    	 }
     }
    }
    
    
    • 1

    Information

    ID
    18784
    Time
    1000ms
    Memory
    128MiB
    Difficulty
    (None)
    Tags
    (None)
    # Submissions
    0
    Accepted
    0
    Uploaded By