Rectangles
Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 17098 Accepted Submission(s): 5507
1.00 1.00 3.00 3.00 2.00 2.00 4.00 4.00 5.00 5.00 13.00 13.00 4.00 4.00 12.50 12.50
1.00 56.25
简单题。
判断两个矩形有没有重叠,若有,则重叠部分面积为第二,第三的x y组成的矩形面积
#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
#include<queue>
#include<algorithm>
#include<string>
#include<map>
using namespace std;
struct Point
{
double x,y;
} p[4];
double area(Point a,Point b)
{
if(b.x>a.x) swap(b.x,a.x);
if(b.y>a.y) swap(b.y,a.y);
//cout<<a.x<<" "<<a.y<<" "<<b.x<<" "<<b.y<<endl;
return (a.x-b.x)*(a.y-b.y);
}
bool cheak(Point a,Point &b,Point &c)
{
if(b.x>c.x) swap(b.x,c.x);
if(b.y>c.y) swap(b.y,c.y);
if(a.x>=b.x&&a.y>=b.y&&a.x<=c.x&&a.y<=c.y) return true ;
return false ;
}
int main()
{
while(~scanf("%lf%lf%lf%lf%lf%lf%lf%lf",&p[0].x,&p[0].y,&p[1].x,&p[1].y,&p[2].x,&p[2].y,&p[3].x,&p[3].y))
{
for(int i=0;i<2;i++)
{
if(p[2*i].x>p[2*i+1].x) swap(p[2*i].x,p[2*i+1].x);
if(p[2*i].y>p[2*i+1].y) swap(p[2*i].y,p[2*i+1].y);
}
if(p[1].x<p[2].x||p[1].y<p[2].y||p[0].x>p[3].x||p[0].y>p[3].y)
{
printf("0.00\n");
}
else
{
for(int i=0;i<4;i++)
{
for(int j=i;j<4;j++)
{
if(p[i].x>p[j].x)
swap(p[i].x,p[j].x);
if(p[i].y>p[j].y)
swap(p[i].y,p[j].y);
}
}
printf("%.2lf\n",(p[2].x-p[1].x)*(p[2].y-p[1].y));
}
}
}