Time Limit: 1MS | | Memory Limit: 65535KB | | 64bit IO Format: |
Description
好奇的skyv95想要做一个正方形的木块,现在有三种颜色的矩形木块,颜色分别为"A","B","C"。他现在很想把三个木块拼接成一个大正方形,现在求助于你们,问分别给你们三种颜色矩形的两个边长,判断是否能组成一个正方形。
Input
依次输入颜色为A的矩形的两边长度,颜色为B的矩形的两边长度,颜色为C的矩形的两边长度。
Output
可以输出"YES",否则输出"NO"。
Sample Input
4 4 2 6 4 2
Sample Output
YES
Hint
例子的图像可以是这样 6 BBBBBB BBBBBB AAAACC AAAACC AAAACC AAAACC
#include<stdio.h>
#include<string.h>
#include<algorithm>
#define INF 0x3f3f3f3f
#define ll long long
#define N 100010
#define M 1000000007
using namespace std;
struct zz
{
int x;
int y;
int s;
}p[6];
int cmp(zz a,zz b)
{
if(a.y==b.y)
return a.x>b.x;
return a.y>b.y;
}
int main()
{
while(scanf("%d%d%d%d%d%d",&p[1].x,&p[1].y,&p[2].x,&p[2].y,&p[3].x,&p[3].y)!=EOF)
{
int i,j,k;
int flag=0;
int sum=0;
for(i=1;i<=3;i++)
{
int t;
if(p[i].x>p[i].y)
{
t=p[i].x;
p[i].x=p[i].y;
p[i].y=t;
}
sum+=p[i].x*p[i].y;
}
sort(p+1,p+4,cmp);
// for(i=1;i<=3;i++)
// printf("%d %d \n",p[i].x,p[i].y);
if(sum!=p[1].y*p[1].y)
{
printf("NO\n");
continue;
}
if(p[1].y==p[2].y&&p[1].y==p[3].y)
{
if(p[1].x+p[2].x+p[3].x==p[1].y)
flag=1;
else
flag=0;
}
else
{
if(p[2].y==p[3].y&&p[2].y+p[1].x==p[1].y)
{
if(p[2].x+p[3].x==p[1].y)
flag=1;
else
flag=0;
}
else if(p[2].x==p[3].y&&p[2].x+p[1].x==p[1].y)
{
if(p[2].y+p[3].x==p[1].y)
flag=1;
else
flag=0;
}
else if(p[2].y==p[3].x&&p[2].y+p[1].x==p[1].y)
{
if(p[2].x+p[3].y==p[1].y)
flag=1;
else
flag=0;
}
else if(p[2].x==p[3].x&&p[2].x+p[1].x==p[1].y)
{
if(p[2].y+p[3].y==p[1].y)
flag=1;
else
flag=0;
}
}
if(flag)
printf("YES\n");
else
printf("NO\n");
}
return 0;
}