Cod sursa(job #27918)

Utilizator wefgefAndrei Grigorean wefgef Data 7 martie 2007 11:57:42
Problema Balanta Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.16 kb
#include <cstdio>
#include <string.h>

#define Nmax 1030

int n, m;
char vmin[Nmax], vmax[Nmax], t1[Nmax], t2[Nmax];

int main()
{
	freopen("balanta.in", "r", stdin);
	freopen("balanta.out", "w", stdout);
	
	int i, val, op, cnt = 0, sol, k;
	
	for (i = 1; i < Nmax; ++i)
		vmin[i] = 1, vmax[i] = 1;
		
	for(scanf("%d %d", &n, &m); m; --m)
	{
		memset(t1, 0, sizeof(t1));
		memset(t2, 0, sizeof(t2));
		
		scanf("%d", &k);
		for (i = 0; i < k; ++i)
		{
			scanf("%d", &val);
			t1[val] = 1;
		}
		for (i = 0; i < k; ++i)
		{
			scanf("%d", &val);
			t2[val] = 1;
		}
		scanf("%d", &op);
		
		switch (op)
		{
			case 0 : for (i = 1; i <= n; ++i) vmin[i] &= (!t1[i]) & (!t2[i]);
					 for (i = 1; i <= n; ++i) vmax[i] &= (!t1[i]) & (!t2[i]);
					 break;
			case 1 : for (i = 1; i <= n; ++i) vmin[i] &= t2[i];
					 for (i = 1; i <= n; ++i) vmax[i] &= t1[i];
					 break;
			case 2 : for (i = 1; i <= n; ++i) vmin[i] &= t1[i];
					 for (i = 1; i <= n; ++i) vmax[i] &= t2[i];
		}
	}
	
	for (i = 1; i <= n; ++i)
		if (vmin[i] || vmax[i])
			++cnt, sol = i;	
		
	if (cnt == 1) printf("%d\n", sol);
	else printf("0\n");
	
	return 0;
}