Input 输入文件包含几个测试用例。它们每个由六行组成。每一行描述一个矩形,包含两个整数数字w和h (1 ≤ w,h ≤ 10000)。 宽度和高度单位都是米Output对于每个测试用例,打印一行输出。如果可以使用六个给定的矩形围成一个盒子,那么输出一个单词“POSSIBLE”。如果不可能的话,输出一个单词“IMPOSSIBLE”。 Sample Input 1345 2584
2584 683
2584 1345
683 1345
683 1345
2584 683
1234 4567
1234 4567
4567 4321
4322 4567
4321 1234
4321 1234
Sample Output POSSIBLE
IMPOSSIBLE 解答: 要想构成立方体,最多有三种不同长度的边。设其为A,B,C且A<B<C。为了简化处理对其进行排序:AB,AB, AC,AC, BC,BC。判断时只需比较:三组中A,B,C,是否相等。
#include<iostream> #include<cstdio> #include<algorithm> #include<cstring> using namespace std; #define x first #define y second pair<int,int> a[7]; int main() { while (1) { for(int i=1;i<=6;i++) { if(!(cin>>a[i].x>>a[i].y)) return 0; if(a[i].x>a[i].y)swap(a[i].x,a[i].y);//相当于等价旋转。 } sort(a+1,a+7); if((a[1]==a[2]&&a[3]==a[4]&&a[5]==a[6])&&a[1].x==a[3].x&&a[3].y==a[5].y&&a[5].x==a[1].y) { printf("POSSIBLE\n"); } else printf("IMPOSSIBLE\n"); } return 0; }