用不着多少条件,并不难。
#include<cstdio>
#include<algorithm>
using namespace std;
const int C=10001;
int p[7];\\用来保存矩形
void swap(int &x,int &y)\\交换变量
{
int t=x;
x=y;
y=t;
}
int x,y;
int main()
{
while(scanf("%d%d",&x,&y)==2)
{
if(x>y)swap(x,y);\\保证x<=y,下面判断用
p[0]=x*C+y;\\两变量合成一变量,注意C不能太大或太小
for(int i=1;i<=5;i++)
{
scanf("%d%d",&x,&y);
if(x>y)swap(x,y);
p[i]=x*C+y;
}
sort(p,p+6);
bool f=false;
if(p[0]==p[1]&&p[2]==p[3]&&p[4]==p[5])\\长方形相对的面相同
{
if(p[0]/C==p[2]/C)\\p[0],p[2]是x较小的两个面
{
if((p[0]%C==p[4]/C&&p[2]%C==p[4]%C)||(p[0]%C==p[4]%C&&p[2]%C==p[4]/C))\\此两种情况满足,则能构成长方形
{
printf("POSSIBLE\n");
f=true;
}
}
}
if(!f)printf("IMPOSSIBLE\n");
}
return 0;
}