Cod sursa(job #804980)

Utilizator dariusdariusMarian Darius dariusdarius Data 30 octombrie 2012 19:39:09
Problema Balanta Scor 30
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.41 kb
#include<stdio.h>
#include<string.h>
int f[1028];
int a1[1028][1028],a2[1028][1028],r[1028],x[1028];
int main()
{
	freopen("balanta.in","r",stdin);
	freopen("balanta.out","w",stdout);
	int j,n,m,i;
	scanf("%d%d",&n,&m);
	for(i=1;i<=m;i++)
	{
		scanf("%d",&x[i]);
		for(j=1;j<=x[i];j++)
			scanf("%d",&a1[i][j]);
		for(j=1;j<=x[i];j++)
			scanf("%d",&a2[i][j]);
		scanf("%d",&r[i]);
	}
	//daca moneda este mai usoara:
	for(i=1;i<=m;i++)
	{
		if(r[i]==0)
			for(j=1;j<=x[i];j++)
				f[a1[i][j]]=f[a2[i][j]]=1;
		else
			if(r[i]==1)
				for(j=1;j<=x[i];j++)
					f[a1[i][j]]=1;
			else
				for(j=1;j<=x[i];j++)
					f[a2[i][j]]=1;
	}
	int ok1=0;
	for(i=1;i<=n;i++)
		if(f[i]==0 && ok1==0)
			ok1=i;
		else
			if(f[i]==0 && ok1!=0)
			{ok1=0;break;}
	memset(f,0,sizeof(f));
	//daca moneda este mai grea:
	for(i=1;i<=m;i++)
	{
		if(r[i]==0)
			for(j=1;j<=x[i];j++)
				f[a1[i][j]]=f[a2[i][j]]=1;
		else
			if(r[i]==1)
				for(j=1;j<=x[i];j++)
					f[a2[i][j]]=1;
			else
				for(j=1;j<=x[i];j++)
					f[a1[i][j]]=1;
	}
	int ok2=0;
	for(i=1;i<=n;i++)
		if(f[i]==0 && ok2==0)
			ok2=i;
		else
			if(f[i]==0 && ok2!=0)
			{ok2=0;break;}
	if(ok1==0 && ok2==0)
		printf("0\n");
	else
		if(ok1==0 && ok2!=0)
			printf("%d\n",ok2);
		else
			if(ok1!=0 && ok2==0)
				printf("%d\n",ok1);
			else
				if(ok1!=ok2)
					printf("0\n");
				else
					printf("%d\n",ok1);
	return 0;
}