範例程式碼 uva1587

//uva1587
#include <stdio.h>

struct pallet {
	int w, h;
} box[6];

int n = 6;
int result = 0;

void swap(int *x, int *y) {
	int temp;
	temp = *x;
	*x = *y;
	*y = temp;
}

void sort(int n) {
	int min;

	for (int i = 0; i < n - 1; i++) {
		min = i;
		for (int j = i + 1; j < n; j++){
			if (box[j].w < box[min].w)
				min = j;
		}

		swap(&box[i].w, &box[min].w);
		swap(&box[i].h, &box[min].h);
	}

	for (int i = 0; i < n - 1; i++) {
		min = i;
		for (int j = i + 1; j < n; j++){
			if (box[j].h < box[min].h)
				min = j;			
		}
		if (box[min].w <= box[i].w) {
			swap(&box[i].w, &box[min].w);
			swap(&box[i].h, &box[min].h);
		}
	}
}

int compare() {
	if (box[0].w == box[1].w && box[0].h == box[1].h && box[2].w == box[3].w && 
	    box[2].h == box[3].h && box[4].w == box[5].w && box[4].h == box[5].h) {
			
		if (box[0].w == box[2].w && box[0].h == box[4].w && box[2].h == box[4].h)
			result = 1;
		else 
			result = 0;	
	}
	else 
		result = 0;

	return result;
}

int main() {

	while (~scanf("%i %i", &box[0].w, &box[0].h)) {
		if (box[0].w > box[0].h)
			swap(&box[0].w, &box[0].h);

		for (int i = 1; i < 6; i++) {
			scanf("%i %i", &box[i].w, &box[i].h);
			if (box[i].w > box[i].h)
				swap(&box[i].w, &box[i].h);
		}

		sort(n);

		result = compare();
		if (result == 0)
			printf("IMPOSSIBLE\n");
		else 
			printf("POSSIBLE\n");
	}

	return 0;
}