矩形的面积

给定二维笛卡尔坐标系下两个边平行于坐标轴的矩形。请计算这两个矩形所覆盖的区域的面积。

输入描述

输入第一行为四个整数 ,表示第一个矩形的两个对角坐标 ;

第二行为四个整数,表示第二个矩形的两个对角坐标 。

输出描述

每组测试用例在单独的一行上输出一个整数表示输入的两个矩形覆盖的区域的总面积。

样例说明

对于第一组样例,其可视化如下图。

case 1

对于第二组样例,其可视化如下图。

case 2

对于第三组样例,其可视化如下图。

case 3

对于第四组样例,其可视化如下图。

case 4

 测试输入关于“测试输入”的帮助期待的输出关于“期待的输出”的帮助时间限制关于“时间限制”的帮助内存限制关于“内存限制”的帮助额外进程关于“{$a} 个额外进程”的帮助
测试用例 1以文本方式显示
  1. 0 0 3 2↵
  2. 4 1 5 3↵
以文本方式显示
  1. 8↵
1秒64M0
测试用例 2以文本方式显示
  1. 0 0 3 2↵
  2. 2 1 4 4↵
以文本方式显示
  1. 11↵
1秒64M0
测试用例 3以文本方式显示
  1. 0 0 3 2↵
  2. 1 1 2 3↵
以文本方式显示
  1. 7↵
1秒64M0
测试用例 4以文本方式显示
  1. 0 0 5 4↵
  2. 2 1 4 3↵
以文本方式显示
  1. 20↵
1秒64M0

 

#include<stdio.h>  
#include<math.h>  
#include<stdlib.h>  
  
int main(){  
    long long s,s1,s2,c=0;  
    long long a[2][2],b[2][2],x=0,y=0;  
      
    scanf("%lld%lld%lld%lld",&a[0][0],&a[0][1],&a[1][0],&a[1][1]);  
    scanf("%lld%lld%lld%lld",&b[0][0],&b[0][1],&b[1][0],&b[1][1]);  
    s1=(a[0][0]-a[1][0])*(a[0][1]-a[1][1]);  
    s2=(b[0][0]-b[1][0])*(b[0][1]-b[1][1]);  
  
    if(a[0][0]>=b[1][0]||a[1][0]<=b[0][0]) x=0; //独立   
    else  
    {  
        if(a[1][0]>=b[1][0]&&a[0][0]<=b[0][0])  //先判断包含,再判断相交   
        x=b[1][0]-b[0][0];  
        else if(b[1][0]>=a[1][0]&&b[0][0]<=a[0][0])  
        x=a[1][0]-a[0][0];  
        else if(a[1][0]>b[0][0]&&a[1][0]<b[1][0])  
        x=a[1][0]-b[0][0];  
        else if(b[1][0]>a[0][0]&&b[1][0]<a[1][0])  
        x=b[1][0]-a[0][0];  
          
    }  
      
    if(a[0][1]>=b[1][1]||a[1][1]<=b[0][1]) y=0;  
    else  
    {     
        if(a[1][1]>=b[1][1]&&a[0][1]<=b[0][1])  
        y=b[1][1]-b[0][1];  
        else if(b[1][1]>=a[1][1]&&b[0][1]<=a[0][1])  
        y=a[1][1]-a[0][1];  
        else if(a[1][1]>b[0][1]&&a[1][1]<b[1][1])  
        y=a[1][1]-b[0][1];  
        else if(b[1][1]>a[0][1]&&b[1][1]<a[1][1])  
        y=b[1][1]-a[0][1];  
          
    }  
    c=x*y;  
    s=s1+s2-c;    
    //printf("%lld,%lld,%lld\n",x,y,c);  
    printf("%lld\n",s);  
      
}  

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值