Description
acm实验室中每个人都精通某一项领域。。。但是有些简单的像a+b problem。。基本上都会。。。如果把每个人会的领域看成个矩形。。。那么所有矩形的交就是实验室中每个人都会的领域。。。现在上聪明的你算出每个人都会的领域的面积。。。
Input
第一行为t个测试数据(t<10)。。。每个测试数据第一行一个数n。。表示n个人(n<10)。。接下来n行每一行表示矩阵对角线两点坐标;为(x1,y1,x2,y2都小于1000整数)
Output
t行每一行一个数为矩阵交的面积
Sample Input
3
2
0 0 2 2
3 3 1 1
3
0 0 5 5
1 1 4 4
3 0 2 3
2
0 0 2 2
5 5 7 7
Sample Output
1
2
0
解题思路:
这个题非常简单,只要记住x、y坐标的最小值和最大值即可
#include <iostream>
using namespace std;
void swap(int&r1,int& r2)
{
int temp = r1;
r1 = r2;
r2 = temp;
}
int main()
{
int T;
cin>>T;
for(int c=0;c<T;++c)
{
int n;
cin>>n;
int minX,minY,maxX,maxY;
minX = minY = 0;
maxX = maxY = 1000;
int x1,x2,y1,y2;
for(int i=0;i<n;++i)
{
cin>>x1>>y1>>x2>>y2;
if(x1>x2)
swap(x1,x2);
if(y1>y2)
swap(y1,y2);
if(x1>minX)
minX = x1;
if(x2<maxX)
maxX = x2;
if(y1>minY)
minY = y1;
if(y2<maxY)
maxY = y2;
}
if(minX>=maxX)
{
cout<<0<<endl;
continue;
}
if(minY>=maxY)
{
cout<<0<<endl;
continue;
}
cout<<(maxX-minX)*(maxY-minY)<<endl;
}
return 0;
}
最后欢迎大家访问我的个人网站: 1024s