HUD2056 Rectangles

来源:互联网 发布:java 字符串数组赋值 编辑:程序博客网 时间:2024/06/10 07:23

Rectangles

Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 24963    Accepted Submission(s): 8116


Problem Description
Given two rectangles and the coordinates of two points on the diagonals of each rectangle,you have to calculate the area of the intersected part of two rectangles. its sides are parallel to OX and OY .
 

Input
Input The first line of input is 8 positive numbers which indicate the coordinates of four points that must be on each diagonal.The 8 numbers are x1,y1,x2,y2,x3,y3,x4,y4.That means the two points on the first rectangle are(x1,y1),(x2,y2);the other two points on the second rectangle are (x3,y3),(x4,y4).
 

Output
Output For each case output the area of their intersected part in a single line.accurate up to 2 decimal places.
 

Sample Input
1.00 1.00 3.00 3.00 2.00 2.00 4.00 4.005.00 5.00 13.00 13.00 4.00 4.00 12.50 12.50
 

Sample Output
1.0056.25
给定两个矩形和每个矩形对角线上两个点的坐标,您必须计算两个矩形的相交部分的面积。其侧面与OX和OY平行。
 输入第一行输入是8个正数,表示必须在每个对角线上的四个点的坐标。8个数字是x1,y1,x2,y2,x3,y3,x4,y4。
这意味着第一个矩形上的两个点是(x1,y1),(x2,y2);第二个矩形上的另外两个点是(x3,y3),(x4,y4)。
输出对于每个案例,它们将相交部分的区域,占一行。最多可以存放2位小数。
将两个矩形的宽(x轴)相加,长(y轴)相加,在分别减去投影到x轴线段的长度,投影到y轴线段的长度,判断两矩形是否有重合部分(
if(n<0||m<0) area = 0;)没有重合,area = 0。否则,area = n * m;输出area即可。

代码如下:

#include<iostream>#include<cstdio>#include<algorithm>#include<cmath>using namespace std;int main(){double m,n,area;    double x1,x2,x3,x4,y1,y2,y3,y4,a[4],b[4]; while(cin >> x1 >> y1 >> x2 >> y2 >> x3 >> y3 >> x4 >> y4){a[0] = x1,a[1] = x2, a[2] = x3, a[3] = x4;b[0] = y1, b[1] = y2, b[2] = y3, b[3] = y4;sort(a,a+4),sort(b,b+4);m = fabs(x1 - x2) + fabs(x3 - x4) - (a[3] - a[0]);n = fabs(y1 - y2) + fabs(y3 - y4) - (b[3] - b[0]);if(n<0||m<0) area = 0;else area = n * m;printf("%.2lf\n",area);}return 0;}


原创粉丝点击