HDU 2056 Rectangles

第二次寫的代碼:


#include<iostream>
#include<algorithm>
#include<cstdio>
using namespace std;
struct node
{
    double x,y;

};
bool cmpx (node a,node b)
{
    return a.x<b.x;
}
bool cmpy (node a,node b)
{
    return a.y<b.y;
}
int main()
{
    int i,j;
    node m[4];
    while(cin>>m[0].x>>m[0].y>>m[1].x>>m[1].y>>m[2].x>>m[2].y>>m[3].x>>m[3].y)
    {
        sort(m,m+2,cmpx);
        if((m[1].y-m[0].y)/(m[1].x-m[0].x)<0)
        {
            swap(m[1].y,m[0].y);
        }
        sort(m+2,m+4,cmpx);
        if((m[3].y-m[2].y)/(m[3].x-m[2].x)<0)
        {
            swap(m[3].y,m[2].y);
        }
  //      cout<<m[0].y<<m[1].y<<m[2].y<<m[3].y;
        double x1,x2,x3,x4,y1,y2,y3,y4;
        x1=m[0].x; y1=m[0].y;
        x2=m[1].x; y2=m[1].y;
        x3=m[2].x; y3=m[2].y;
        x4=m[3].x; y4=m[3].y;
        sort(m,m+4,cmpx);
        if(m[1].x!=x2&&m[1].x!=x4)
        {
            x1=m[1].x;x2=m[2].x;
            sort(m,m+4,cmpy);
            if(m[1].y!=y2&&m[1].y!=y4)
            {
                y1=m[1].y;y2=m[2].y;
                printf("%.2lf\n",(y2-y1)*(x2-x1));
            }
            else cout<<"0.00"<<endl;
        }
        else cout<<"0.00"<<endl;
    }
    return 0;
}

第一次寫的代碼

#include<stdio.h>
#include<math.h>
int main()
{
    double x1,y1,x2,y2,x3,y3,x4,y4;
    while(scanf("%lf%lf%lf%lf%lf%lf%lf%lf",&x1,&y1,&x2,&y2,&x3,&y3,&x4,&y4)!=EOF)
    {
        if(x1>x2){
            x1=x1+x2;
            x2=x1-x2;
            x1=x1-x2;
        
        }    
        if(y1>y2){
                y1=y1+y2;
                y2=y1-y2;
                y1=y1-y2;
            }
        if(x3>x4){
            x3=x3+x4;
            x4=x3-x4;
            x3=x3-x4;
            
        }
        if(y3>y4){
                y3=y3+y4;
                y4=y3-y4;
                y3=y3-y4;
            }
        double maxy,maxx;
        maxx=x1>x3?x1:x3;
        maxy=y1>y3?y1:y3;
    
        double minx,miny;
        minx=x2<x4?x2:x4;
        miny=y2<y4?y2:y4;
        if(minx<=maxx||miny<=maxy)
            printf("0.00\n");
        else{
            double s=fabs((miny-maxy))*fabs(minx-maxx);
            printf("%.2f\n",s);
        }
    }
    return 0;
}



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章