#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.