UVa 1587 - Box

下午上Acm课看不清投影,就看了了看书,这道题感觉还能简单点,就回来先做了,交了三次Ac的,第一次是忽略了第一个长方形的长宽不在后来的循环里,没有进行大小交换,第二次是没有删除调试用的输出数组b值的语句。。


#include <stdio.h>
#include <string.h>
int main()
{
    int i,j,temp,k,l,x,count;
    int a[6][2];
    int b[6];
    int c[6][2];
    while(scanf("%d%d",&a[0][0],&a[0][1])!=EOF)
    {
        if(a[0][0]>a[0][1])
        {
            temp=a[0][0];
            a[0][0]=a[0][1];
            a[0][1]=temp;
        }
        x=1,count=0;
        memset(b,0,sizeof(b));
        c[0][0]=c[0][1]=0;
        for(i=1;i<6;i++)
        {
            scanf("%d%d",&a[i][0],&a[i][1]);
            c[i][0]=c[i][1]=0;
            if(a[i][0]>a[i][1])
            {
                temp=a[i][0];
                a[i][0]=a[i][1];
                a[i][1]=temp;
            }
        }
        for(i=0;i<6;i++)
        {
            for(j=0;j<6;j++)
            {
                for(k=0;k<2;k++)
                {

                    if(a[i][k]==a[j][0]&&i!=j)
                        c[i][k]++;
                    if(a[i][k]==a[j][1]&&i!=j)
                        c[i][k]++;
                }
                if(a[i][0]==a[j][0]&&a[i][1]==a[j][1]&&i!=j)
                    b[i]++;
            }
            if(a[i][0]==a[i][1])
                count++;
        }
        if(count==0&&b[0]==5)
            x=0;
        if(count>2&&c[0][0]!=10)
            x=0;
        for(i=0;i<6;i++)
        {
            if(!x)
                goto END;
            if(!b[i])
                x=0;
            for(j=0;j<2;j++)
                if(c[i][j]<3)
                    x=0;
        }
        END:
        if(x)
            printf("POSSIBLE\n");
        else
            printf("IMPOSSIBLE\n");
    }
    return 0;
}


你可能感兴趣的:(uva)