思路:由于出入的w和h不一定哪个大,给数据的处理带来麻烦,所以,先用结构题来存储w和h,并且数据存储要求为w>h,存储到结构体的数组中后,对现有的数据进行排序,排序的规则是,w不同时,按照w升序,否则按照h升序。
长方体的6个面的特点:两两面相同,ab,ab,ac,ac,bc,bc。 (其中 a=1,b=2,c=6) 。在编码中进行判断即可。
#include<cstdio>
#include<algorithm>
using namespace std;struct Pallets{int x,y;
}a[6];bool cmp(Pallets a,Pallets b){return a.x!=b.x? a.x<b.x:a.y>b.y;
}int main(){
// freopen("input.txt","r",stdin);bool isOk(Pallets a[6]);int x,y;while(scanf("%d%d",&x,&y)!=EOF){a[0].x=x; a[0].y=y;if(a[0].x>a[0].y){swap(a[0].x,a[0].y);}for(int i=1 ;i<6 ;i++){scanf("%d%d",&x,&y);a[i].x = x;a[i].y = y;if(a[i].x>a[i].y){swap(a[i].x,a[i].y);}}sort(a,a+6,cmp);if(isOk(a)){printf("POSSIBLE\n");}else{printf("IMPOSSIBLE\n");}}return 0;
}bool isOk(Pallets a[6]){if(a[0].x!=a[1].x||a[2].x!=a[3].x||a[4].x!=a[5].x||a[0].y!=a[1].y||a[2].y!=a[3].y||a[4].y!=a[5].y){return false;}if(a[0].x!=a[2].x||a[0].y!=a[4].y||a[2].y!=a[4].x){return false;}return true;
}