Cod sursa(job #287173)

Utilizator antoanelaAntoanela Siminiuc antoanela Data 24 martie 2009 16:35:41
Problema Balanta Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.17 kb
#include <cstdio>
#define lm 1100

int a[lm][lm], v[2*lm], r[lm], n, m;

int main()
{
    freopen("balanta.in","r",stdin);
	freopen("balanta.out","w",stdout);
	scanf("%d %d",&n,&m);
	int i, j, k;
	for (i=1; i<=m; i++)
	    for (j=1; j<=n; j++) a[i][j]=-1;
	for (i=1; i<=m; i++)
	{
	    scanf("%d",&k);
		for (j=1; j<=2*k; j++) scanf("%d",&v[j]);
		scanf("%d",&r[i]);
		for (j=1; j<=k; j++) a[i][v[j]]=r[i];
		for (j=k+1; j<=2*k; j++)
		    if (r[i]==1) a[i][v[j]]=2; else
			if (r[i]==2) a[i][v[j]]=1; else a[i][v[j]]=0;
    }
	int sol, ok;
	sol=0;
	for (i=1; i<=n; i++)
	{
	    ok=1;
//      mai grea
	    for (j=1; j<=m; j++)
			if (a[j][i]==0 || a[j][i]==2) ok=0; else
			if (a[j][i]==-1 && r[j]!=0) ok=0;
		if (ok)
		{
            if (!sol) sol=i; else
			{
 			    sol=0;
			    break;
            }
        } else
		{
//          mai usoara
		    ok=1;
			for (j=1; j<=m; j++)
			    if (a[j][i]==0 || a[j][i]==1) ok=0; else
				if (a[j][i]==-1 && r[j]!=0) ok=0;
            if (ok)
			{
			    if (!sol) sol=i; else
				{
				    sol=0;
				    break;
                }
            }
        }
    }
	printf("%d",sol);
}