Cod sursa(job #27610)

Utilizator slayer4uVictor Popescu slayer4u Data 6 martie 2007 20:41:03
Problema Balanta Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.31 kb
#include<cstdio>
int taler1[5001][5001],taler2[5001][5001],r[5001],i,j,sol[10001],nsol,m,n;
int main()
{
	freopen ("balanta.in","rt",stdin);
	freopen ("balanta.out","wt",stdout);

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

	for (i=1;i<=n;i++)
	{
		scanf("%d",&taler1[i][0]);
		for (j=1;j<=taler1[i][0];j++)
			scanf("%d",&taler1[i][j]);
		for (j=1;j<=taler1[i][0];j++)
			scanf("%d",&taler2[i][j]);
		scanf("%d",&r[i]);
	}

	// pp k e mai usoara
	nsol=m;
	for (i=1;i<=n;i++)
	{
		if (r[i]==0)
		{
			for (j=1;j<=taler1[i][0];j++)
				sol[taler1[i][j]]=1, sol[taler2[i][j]]=1, nsol--;
		}
		else
		if (r[i]==1)
		{
			for (j=1;j<=taler1[i][0];j++)
				sol[taler2[i][j]]=1, nsol--;
		}
		else
			for (j=1;j<=taler1[i][0];j++)
				sol[taler1[i][j]]=1, nsol--;
		if (nsol==1)
			for (j=1;j<=m;j++) if (!sol[j]) {printf("%d\n",j);return 0;}
	}

	// pp k e mai grea
	nsol=m;
	for (i=1;i<=m;i++)
		sol[i]=0;
	for (i=1;i<=n;i++)
	{
		if (r[i]==0)
		{
			for (j=1;j<=taler1[i][0];j++)
				sol[taler1[i][j]]=1, sol[taler2[i][j]]=1, nsol--;
		}
		else
		if (r[i]==1)
		{
			for (j=1;j<=taler1[i][0];j++)
				sol[taler1[i][j]]=1, nsol--;
		}
		else
			for (j=1;j<=taler1[i][0];j++)
				sol[taler2[i][j]]=1, nsol--;
		if (nsol==1)
			for (j=1;j<=m;j++) if (!sol[j]) {printf("%d\n",j);return 0;}
	}
	return 0;
}