Regionals 2004 >> Europe-northeastern
Problem Link: UVA1587 UVALive3214 POJ2160 Box.
Question Summary: Give six sets of integers, ask whether can constitute hexahedral.
This problem in C language does not have the technical content, perhaps in C + + to write better.
The C language Program of AC is as follows:
/* UVA1587 UVALive3214 POJ2160 Box */#include <stdio.h> #define MAXN 6struct {int W, h; int count;} A[maxn];int acount;void Swap (int n) {if (A[n].w > a[n].h) {int temp = A[N].W; A[N].W = a[n].h; A[n].h = temp; }}int Checkok () {if (A[0].W = = A[1].W && a[0].h = a[2].w && a[1].h = a[2].h) return 1; else if (A[0].W = = A[1].W && a[0].h = = a[2].h && a[1].h = A[2].W) return 1; else if (A[0].W = = A[1].h && a[0].h = = A[2].W && A[1].W = a[2].h) return 1; else if (A[0].W = = A[1].h && a[0].h = = a[2].h && A[1].W = A[2].W) return 1; else if (a[0].h = = A[1].W && A[0].W = = A[2].W && a[1].h = a[2].h) return 1; else if (a[0].h = = A[1].W && A[0].W = = a[2].h && a[1].h = A[2].W) return 1; else if (a[0].h = = A[1].h && A[0].W = = A[2].W && A[1].W = a[2].h) return 1; else if (a[0].h = = A[1].h && A[0].W = = a[2].h && A[1].W = a[2].w] return 1; else return 0;} int main (void) {int I, J; while (scanf ("%d%d", &A[0].W, &a[0].h)! = EOF) {a[0].count = 1; Swap (0); acount = 1; for (I=1; i<maxn; i++) {scanf ("%d%d", &A[ACOUNT].W, &a[acount].h); A[acount].count = 1; Swap (acount); /* To repeat */for (j=0; j<acount; j + +) if (A[J].W = = A[ACOUNT].W && a[j].h = a[acount].h & amp;& A[j].count! = 2) {a[j].count++; acount--; Break } acount++; } if (acount! = 3) printf ("impossible\n"); else if (Checkok ()) printf ("possible\n"); else printf ("impossible\n"); } return 0;}
UVA1587 UVALive3214 POJ2160 Box