盒子(Box,ACM/ICPC NEERC 2004,UVa1587)

盒子(Box,ACM/ICPC NEERC 2004,UVa1587)

 

题目描述:

给出6个木条的长和宽,判断用这些木条能否组成长方体。能,输出POSSIBLE;否则输出IMPOSSIBLE

思路详解:

先是在输入数据的时候就先对其作出处理,保证x 再是对存储在结构体中的数据排序。
如果x相同,则按照y的值从小到大排序;否则按照x的值从小到大排序。 

长方体有三个“对面”,排好序后,直接判断一下“对面”的长宽是否相等,用flag做列标记。

也就是 判断一对面中的长或宽等于另一对面中的长或宽 。盒子(Box,ACM/ICPC NEERC 2004,UVa1587)_第1张图片

以第一组数据为例:

1345  2584

2584  683

2584  1345

683    1345

683    1345

2584  683

排序之后:

0  683  1345

1  683  1345

2  683  2584

3  683  2584

4  1345 2584

5  1345 2584

 

代码:

#include 
#include 
#include 
using namespace std; 

struct mp{
	int x,y; 
} ; 
bool cmp(mp a,mp b) 
{
	if(a.x==b.x)return a.y>a>>b)
	{
		if(a>b)swap(a,b);
		mp d[7];
		d[0].x=a;d[0].y=b;
		for(int i=1;i<6;i++)
		{
			cin>>a>>b;
			if(a>b)swap(a,b);
			d[i].x=a;d[i].y=b; 
		} 
		//先是在输入数据的时候就先对其作出处理,保证x

 

你可能感兴趣的:(UVA)