Cod sursa(job #34421)

Utilizator MariusMarius Stroe Marius Data 20 martie 2007 18:59:34
Problema Balanta Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.32 kb
#include <cstdio>
using namespace std;

const char iname[] = "balanta.in";
const char oname[] = "balanta.out";

#define MAX_N 1025

int H[MAX_N], L[MAX_N];

int N, M;

int A[MAX_N], B[MAX_N];


int main(void)
{
	freopen(iname, "r", stdin);

	scanf("%d", & N);
	for (int i = 1; i <= N; ++ i)
		H[i] = L[i] = 1;
	for (scanf("%d", & M); M --; ) {
		int k;
		scanf("%d", & k);
		int num;
		for (int i = 1; i <= k; ++ i)
			scanf("%d", & num), A[num] = 1;
		for (int i = 1; i <= k; ++ i)
			scanf("%d", & num), B[num] = 1;
		int res;
		scanf("%d", & res);
		if (res == 0) {
			for (int i = 1; i <= N; ++ i) {
				if (A[i] || B[i])  
					H[i] = L[i] = 0;
			}
		} else if (res == 1) {
			for (int i = 1; i <= N; ++ i)
				if (A[i] == 0)	H[i] = 0;
			for (int i = 1; i <= N; ++ i)
				if (B[i] == 0)  L[i] = 0;
		} else {
			for (int i = 1; i <= N; ++ i)
				if (A[i] == 0)	L[i] = 0;
			for (int i = 1; i <= N; ++ i)
				if (B[i] == 0)  H[i] = 0;
		}
		for (int i = 1; i <= N; ++ i)
			A[i] = B[i] = 0;
	}
	int h = 0;
	for (int i = 1; i <= N; ++ i)
		if (H[i])	h ++;
	int l = 0;
	for (int i = 1; i <= N; ++ i)
		if (L[i])	l ++;
	
	freopen(oname, "w", stdout);
	if (h + l == 1) {
		for (int i = 1; i <= N; ++ i)
			if (H[i] || L[i])
				printf("%d\n", i);
	} else
		printf("0\n");
	return 0;
}