Problem background
Ivan works at a factory that produces heavy machinery. He has a simple job | he knocks up wooden boxes of different sizes to pack machinery for delivery to the customers. Each box is a rectangular parallelepiped. Ivan uses six rectangular wooden pallets to make a box. Each pallet is used for one side of the box.
Joe delivers pallets for Ivan. Joe is not very smart and often makes mistakes | he brings Ivan pallets that do not t together to make a box. But Joe does not trust Ivan. It always takes a lot of time to explain Joe that he has made a mistake.
Fortunately, Joe adores everything related to computers and sincerely believes that computers never make mistakes. Ivan has decided to use this for his own advantage. Ivan asks you to write a program that given sizes of six rectangular pallets tells whether it is possible to make a box out of them
InputInput file contains several test cases. Each of them consists of six lines. Each line describes one pallet and contains two integer numbers w and h (1 <= w;h <= 10 000) — width and height of the pallet in millimeters respectively.Output
For each test case, print one output line. Write a single word "POSSIBLE" to the output file if it is possible to make a box using six given pallets for its sides. Write a single word "IMPOSSIBLE" if it is not possible to do so.
Sample Input1345 25842584 6832584 1345683 1345683 13452584 6831234 45671234 45674567 43214322 45674321 12344321 1234Sample OutputPOSSIBLEIMPOSSIBLE
My Solution
#include <algorithm> #include <stdio.h> #include <stdlib.h> //usage of structure //usage of operation overloading //usage of sort //usage of swap struct Node{ int h, w; bool operator < (const Node & rhn) const{ if(rhn.h == h) return w < rhn.w; return h < rhn.h; } }a[8]; bool check(){ if(a[0].h != a[1].h || a[0].w != a[1].w) return false; if(a[2].h != a[3].h || a[2].w != a[3].w) return false; if(a[4].h != a[5].h || a[4].w != a[5].w) return false; if(a[0].h != a[2].h) return false; if(a[2].w != a[4].w) return false; if(a[0].w != a[4].h) return false; return true; } int main(){ using namespace std; while(scanf("%d %d", &a[0].h, &a[0].w)!=EOF){ if(a[0].h > a[0].w) swap(a[0].h, a[0].w); for(int i = 1; i < 6; i++){ scanf("%d %d", &a[i].h, &a[i].w); if(a[i].h > a[i].w) swap(a[i].h, a[i].w); } sort(a, a+6); if(check()) printf("POSSIBLE\n"); else printf("IMPOSSIBLE\n"); } }