View Code of Problem 3928

#include<stdio.h>
#include<string.h>
struct cfx
{
	int chang;
	int kuan;
}cfx[3];
int main()
{
	//对输入的六个长方形进行处理,提取可能构成长方体的三面。 
	int x[6],y[6];
	while(scanf("%d %d",&x[0],&y[0])!=EOF)
	{
		for(int i=1;i<6;i++)
		{
			scanf("%d %d",&x[i],&y[i]);
		}
		
		for(int i=0;i<3;i++)
		{
			cfx[i].chang=0;cfx[i].kuan=0;
		}
		
		int flag=0;
		for(int i=0;i<6;i++)
		{
			for(int j=i+1;j<6;j++)
			{
				if((x[j]==x[i]&&y[i]==y[j])||(x[j]==y[i]&&x[i]==y[j]))
				{
					cfx[flag].chang=x[i]>y[i]?x[i]:y[i];
					cfx[flag].kuan=x[i]<y[i]?x[i]:y[i];
					x[i]=10001+i;y[i]=10001+i;x[j]=10001+j;y[j]=10001+j;
					flag++;
				}
			}
		}	
//		for(int i=0;i<3;i++)
//		{
//			printf("%d %d\n",cfx[i].chang,cfx[i].kuan);
//		}
		int right=0;	
		if(flag!=3)
		{
			printf("IMPOSSIBLE\n");
			continue;
		}
		else 
		{
			for(int i=0;i<3;i++)
			{
				for(int j=0;j<3;j++)
				{
					if(i!=j&&cfx[i].chang==cfx[j].chang)
					{
						if((cfx[i].kuan==cfx[3-i-j].chang&&cfx[j].kuan==cfx[3-i-j].kuan)||(cfx[i].kuan==cfx[3-i-j].kuan&&cfx[j].kuan==cfx[3-i-j].chang))
						{
							right=1;
						}
					}
					else if(i!=j&&cfx[i].chang==cfx[j].kuan)
					{
						if((cfx[i].kuan==cfx[3-i-j].chang&&cfx[j].chang==cfx[3-i-j].kuan)||(cfx[i].kuan==cfx[3-i-j].kuan&&cfx[j].chang==cfx[3-i-j].chang))
						{
							right=1;
						}
					}
					else if(i!=j&&cfx[i].kuan==cfx[j].kuan)
					{
						if((cfx[i].chang==cfx[3-i-j].chang&&cfx[j].chang==cfx[3-i-j].kuan)||(cfx[i].chang==cfx[3-i-j].kuan&&cfx[j].chang==cfx[3-i-j].chang))
						{
							right=1;
						}
					}
					else if(i!=j&&cfx[i].kuan==cfx[j].chang)
					{
						if((cfx[i].chang==cfx[3-i-j].chang&&cfx[j].kuan==cfx[3-i-j].kuan)||(cfx[i].chang==cfx[3-i-j].kuan&&cfx[j].kuan==cfx[3-i-j].chang))
						{
							right=1;
						}
					}
				}
			}
		}
		if(right==1)
		{
			printf("POSSIBLE\n");
		}
		else printf("IMPOSSIBLE\n");	 
	}
}

Double click to view unformatted code.


Back to problem 3928