Cod sursa(job #26622)

Utilizator surcauvsurcau vasile surcauv Data 5 martie 2007 19:38:39
Problema Balanta Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.98 kb
# include <stdio.h>
# include <string.h>

# define  _fin  "balanta.in"
# define  _fout "balanta.out"

# define  maxn  1032


int h[maxn], l[maxn];


int main()
{
	freopen(_fin, "r", stdin);
	freopen(_fout,"w", stdout);
	
	int i, j, n, m, a[maxn], b[maxn], k, x, sol, card;
	
	for (scanf("%d%d", &n, &m), i=1; i<=n; i++) h[i] = l[i] = 1;
	
	for (j=1; j<=m; j++)
	{
		memset(a, 0, sizeof(a)), memset(b, 0, sizeof(b));
		
		for (scanf("%d", &k), i=1; i<=k; i++) scanf("%d", &x), a[x]=1;
		for (i=1; i<=k; i++) scanf("%d", &x), b[x]=1;
		
		scanf("%d", &x);
		
		if ( !x )
			for (i=1; i<=n; i++)
				h[i] &= (!a[i]), h[i] &= (!b[i]),
				l[i] &= (!a[i]), h[i] &= (!b[i]);
		else if ( x==1 )
			for (i=1; i<=n; i++)
				h[i] &= a[i], l[i] &= b[i];
		else if ( x==2 )
			for (i=1; i<=n; i++)
				l[i] &= a[i], h[i] &= b[i];
	}
	
	for (card=sol=0, i=1; i<=n; i++) card += h[i]+l[i], sol += ( h[i] + l[i] ) * i;
	
	printf("%d\n", card==1?sol : 0);
	
	return 0;
}