zzulioj1816: 矩形

来源:互联网 发布:网络系统集成案例 编辑:程序博客网 时间:2024/06/08 16:19

1816: 矩形

Time Limit: 1 Sec  Memory Limit: 128 MB
Submit: 96  Solved: 27

SubmitStatusWeb Board

Description

小S和小D两个小雪参,在玩一个关于矩形的游戏以帮助他们学会怎么计算矩形的面积然后完成作业去打游戏(两个小雪参一起打游戏你怕不怕!)。他们约定每个人给出两个坐标,分别是两个矩形的左下角和右上角的坐标,他们的游戏规则很简单,就是看谁先找出来这两个矩形的覆盖的总面积大小。你的问题就是帮助他们给出正确答案。

Input

输入的第一行为一个整数T,代表样例的组数。

每组样例包含4个坐标(x,y),( -100000000<= x,y <= 100000000 )前两个是小S给出的矩形左下角和右上角的坐标,后面两个是小D给出来的坐标。

Output

输出两个矩形覆盖的总面积大小。

Sample Input

3
-2 -2 2 2 -2 -2 2 2
0 0 1 1 0 0 2 2
-2 -2 2 2 1 -3 3 -1

Sample Output

16
4
19

HINT

Source

郑大第九届校赛正式赛


#include<cstdio>#include<cstdlib>#include<cstring>#include<algorithm>#include<cmath>using namespace std;long long  x[5],y[5];int main(){int t;long long x1,y1,x2,y2,x3,y3,x4,y4;scanf("%d",&t);while(t--){scanf("%lld%lld%lld%lld%lld%lld%lld%lld",&x1,&y1,&x2,&y2,&x3,&y3,&x4,&y4);x[0]=x1;x[1]=x2;x[2]=x3;x[3]=x4;y[0]=y1;y[1]=y2;y[2]=y3;y[3]=y4;sort(x,x+4);sort(y,y+4);long long  s=(x2-x1)*(y2-y1)+(x4-x3)*(y4-y3);long long w=(x2-x1)+(x4-x3)-(x[3]-x[0]);long long h=(y2-y1)+(y4-y3)-(y[3]-y[0]);if(w<=0||h<=0){printf("%lld\n",s);}else {printf("%lld\n",s-w*h);}}return 0;} 


0 0