矩形面积

157 阅读1分钟

23蓝桥b组Java题


//平面上有两个矩形R1和R2,他们各边都与坐标轴平行。
// 设(x1,y1)(x2,y2),(x3,y3)(x4,y4)分别为R1和R2的左下,右上坐标。计算总面积(重合区域只算一次)
//输入包括八个整数x1,y1,x2,y2,x3,y3,x4,y4.
import java.util.Arrays;
import java.util.Comparator;
import java.util.Scanner;

public class main {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        Long [][]arr = new Long[2][4];
        for (int i = 0; i < 2; i++) {
            for (int j = 0; j < 4; j++) {
                arr[i][j] = scan.nextLong();
            }
        }
        Arrays.sort(arr, Comparator.comparingLong(o -> o[0]));//保证arr[0][0]<=arr[1][0]
        long sum =  0;
        sum += (arr[0][2]-arr[0][0])*(arr[0][3]-arr[0][1]);
        sum += (arr[1][2]-arr[1][0])*(arr[1][3]-arr[1][1]);
        if (arr[1][0]>=arr[0][2]) {
            System.out.println(sum);
        } else{//求重叠区域
                long res = 0;
                long x1 =arr[1][0];//左下角
                long y1 = Math.max(arr[0][1],arr[1][1]);
                long x2 = Math.min(arr[0][2],arr[1][2]);//右上角
                long y2 = Math.min(arr[0][3],arr[1][3]);
                res = (y2-y1)*(x2-x1);
                System.out.println(sum-res);

        }
    }

}