Cod sursa(job #27167)

Utilizator RutZapGruia Radu RutZap Data 6 martie 2007 10:26:26
Problema Balanta Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.12 kb
#include <stdio.h>
int h[1025],l[1025],a[1025], b[1025],n;

void nn(int a[1025], int b[1025])
{
for (int i=1;i<=n;i++) if (a[i]==1 && b[i]==1) a[i]=1;
			else a[i]=0;

}

void rezolva(int aux)
{
 if (aux==0) for (int i=1;i<=n;i++)
			{
			if (a[i]==1) {h[i]=0;l[i]=0;}
			if (b[i]==1) {h[i]=0;l[i]=0;}
			}
 if (aux==1)
			{
			nn(h,a);
			nn(l,b);
			}
 if (aux==2)
			{
			nn(h,b);
			nn(l,a);
			}

}




int main()
{
 freopen("balanta.in","r",stdin);
 freopen("balanta.out","w", stdout);

 int m,k,i,j,aux;

 scanf("%d %d", &n, &m);

 for (i=1;i<=n;i++) {h[i]=1;l[i]=1;}

 for (j=1;j<=m;j++)
  {
  scanf("%d",&k);
  for (i=1;i<=n;i++) {a[i]=0;b[i]=0;}
  for (i=1;i<=k;i++) {
		      scanf("%d",&aux);
		      a[aux]=1;
		     }
  for (i=1;i<=k;i++) {
		      scanf("%d",&aux);
		      b[aux]=1;
		     }
  scanf("%d",&aux);
  rezolva(aux);
  }

  m=0;k=0;
  int poz=0;
  for (i=1;i<=n;i++)
	{
	if (h[i]==1) {m++;poz=i;}
	if (l[i]==1) {k++;poz=i;}
	}
 if ((m==0) && (k==1)) printf("%d",poz);
 else if ((m==1) && (k==0)) printf("%d",poz);
 else printf("0");
 return 0;
}