Cod sursa(job #25275)

Utilizator robbyRobertino robert robby Data 4 martie 2007 11:46:09
Problema Balanta Scor 100
Compilator c Status done
Runda preONI 2007, Runda 3, Clasa a 10-a Marime 1.38 kb
#include <stdio.h>
#define nmax 1025
int v[nmax],v2[nmax],a[nmax][nmax],b[nmax];

FILE *f,*g;
int main()
{
  int n,m,i,j,k,x,r;
  f=fopen("balanta.in","rt");
  g=fopen("balanta.out","wt");
  fscanf(f,"%d %d\n",&n,&m);
  for (i=1;i<=m;i++)
	{
	  fscanf(f,"%d",&k);
	  x=2*k;
	  for (j=1;j<=x;j++)
		{
		  fscanf(f,"%d",&r);
		  b[j]=r;
		  a[i][r]=1;
		}
	  fscanf(f,"%d\n",&r);
//-1 <
//+1 >
//+2 =
	  if (r==0)
		{
		  for (j=1;j<=n;j++)
			if (a[i][j])
			  {
				v[j]=1;
				v2[j]=2;
			  }
		}
	   else
		if (r==1)
		 {
		   for (j=1;j<=n;j++)
			 if (!a[i][j])
			   v[j]=1;

		   for (j=1;j<=k;j++)
			 if (v2[b[j]]==-1)
			   v2[b[j]]=2;
			  else
			 if (v2[b[j]]==0)
			   v2[b[j]]=1;

		   for (j=k+1;j<=x;j++)
			 if (v2[b[j]]==1)
			   v2[b[j]]=2;
			  else
			 if (v2[b[j]]==0)
			   v2[b[j]]=-1;

		 }
		 else
		 {
		   for (j=1;j<=n;j++)
			 if (!a[i][j])
			   v[j]=1;

		   for (j=1;j<=k;j++)
			 if (v2[b[j]]==1)
			   v2[b[j]]=2;
			  else
			 if (v2[b[j]]==0)
			   v2[b[j]]=-1;

		   for (j=k+1;j<=x;j++)
			 if (v2[b[j]]==-1)
			   v2[b[j]]=2;
			  else
			 if (v2[b[j]]==0)
			   v2[b[j]]=1;

		 }

	}
  r=1;
  x=0;
  for (i=1;i<=n;i++)
	if (!v[i]&&v2[i]!=2)
	  {
		if (r==0)
		  {
			x=0;
			break;
		  }
		x=i;
		r=0;
	  }
  fprintf(g,"%d\n",x);
  fclose(f);
  fclose(g);
  return 0;
}