Cod sursa(job #29757)

Utilizator a7893Nae Mihai a7893 Data 9 martie 2007 21:46:28
Problema Balanta Scor 90
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.71 kb
#include<stdio.h>
int n,m,k,a[1024],b[1024],r,h[1024],l[1024];
void citire()
{
	scanf("%d%d",&n,&m);
	for(int i=0;i<n;i++)
		h[i]=l[i]=1;
}
void diferenta()
{
	int i,j;
	for(i=0;i<n;i++)
		for(j=0;j<k;j++)
			if(i+1==a[j])
				h[i]=0;
	for(i=0;i<n;i++)
		for(j=0;j<k;j++)
			if(i+1==a[j])
				l[i]=0;
	for(i=0;i<n;i++)
		for(j=0;j<k;j++)
			if(i+1==b[j])
				h[i]=0;
	for(i=0;i<n;i++)
		for(j=0;j<k;j++)
			if(i+1==b[j])
				l[i]=0;
}
void intersectie1()
{
	int i,j,ok;
	for(i=0;i<n;i++)
	{
		ok=0;
		for(j=0;j<k;j++)
			if(a[j]==i+1&&h[i])
				ok=1;
		if(ok)
			h[i]=1;
		else
			h[i]=0;
	}
	for(i=0;i<n;i++)
	{
		ok=0;
		for(j=0;j<k;j++)
			if(b[j]==i+1&&l[i])
				ok=1;
		if(ok)
			l[i]=1;
		else
			l[i]=0;
	}
}
void intersectie2()
{
	int i,j,ok;
	for(i=0;i<n;i++)
	{
		ok=0;
		for(j=0;j<k;j++)
			if(b[j]==i+1&&h[i])
				ok=1;
		if(ok)
			h[i]=1;
		else
			h[i]=0;
	}
	for(i=0;i<n;i++)
	{
		ok=0;
		for(j=0;j<k;j++)
			if(a[j]==i+1&&l[i])
				ok=1;
		if(ok)
			l[i]=1;
		else
			l[i]=0;
	}
}
void rezolva()
{
	int i,j,nr1=0,nr2=0,p1,p2;
	for(i=0;i<m;i++)
	{
		scanf("%d",&k);
		for(j=0;j<k;j++)
			scanf("%d",&a[j]);
		for(j=0;j<k;j++)
			scanf("%d",&b[j]);
		scanf("%d",&r);
		if(r==0)
			diferenta();
		if(r==1)
			intersectie1();
		if(r==2)
			intersectie2();
	}
	for(i=0;i<n;i++)
		if(h[i])
		{
			nr1++;
			p1=i;
		}
	for(i=0;i<n;i++)
		if(l[i])
		{
			nr2++;
			p2=i;
		}
	if(nr1==nr2)
		printf("%d\n",0);
	else
	{	if(nr1==1)
			printf("%d\n",p1+1);
		if(nr2==1)
			printf("%d\n",p2+1);
	}
}
int main()
{
	freopen("balanta.in","r",stdin);
	freopen("balanta.out","w",stdout);
	citire();
	rezolva();
	return 0;
}