codeforces 334B - Eight Point Sets

题意难懂,其实就是x1<x2<x3与y1<y2<y3两两组合成九个点,去掉(x2,y2),剩余八个。这样的八个点才是满足要求的。

忘去重了

#include<cstdio>
#include<cstring>
#include<cstdlib>
#include<cmath>
#include<algorithm>
using namespace std;

#define LL __int64

int a[10][2],b[5],c[5];

int main()
{
    int n,i,j,tot;
    memset(b,-1,sizeof(b));
    memset(c,-1,sizeof(c));
    for(i=0;i<8;i++)
    {
        scanf("%d%d",&a[i][0],&a[i][1]);
        for(j=0;j<4;j++)
        {
            if(b[j]==-1){
                b[j]=a[i][0];
                break;
            }
            else if(b[j]==a[i][0])
                break;
        }
        for(j=0;j<4;j++)
        {
            if(c[j]==-1){
                c[j]=a[i][1];
                break;
            }
            else if(c[j]==a[i][1])
                break;
        }
    }
    for(i=0;i<8;i++)
    {
        for(j=i+1;j<8;j++)
        {
            if(a[i][0]==a[j][0]&&a[i][1]==a[j][1]){
                printf("ugly\n");
                return 0;
            }
        }
    }

    if(b[3]!=-1||c[3]!=-1||b[2]==-1||c[2]==-1)
        printf("ugly\n");
    else {
        int x1=b[0],x2=b[1],x3=b[2];
        int y1=c[0],y2=c[1],y3=c[2];
        if(x1>x2)
            swap(x1,x2);
        if(x1>x3)
            swap(x1,x3);
        if(x2>x3)
            swap(x2,x3);

        if(y1>y2)
            swap(y1,y2);
        if(y1>y3)
            swap(y1,y3);
        if(y2>y3)
            swap(y2,y3);
        //printf("%d %d\n",x2,y2);
        for(i=0;i<8;i++)
        {
            if(a[i][0]==x2&&a[i][1]==y2)
                break;
        }
        if(i<8)
            printf("ugly\n");
        else
            printf("respectable\n");
    }
    return 0;
}
View Code

 

posted @ 2013-07-27 20:49  Thousand Sunny  阅读(377)  评论(0编辑  收藏  举报