Cod sursa(job #183744)

Utilizator MariusGeantaMarius Geanta MariusGeanta Data 22 aprilie 2008 15:35:39
Problema Balanta Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.11 kb
#include<stdio.h>
int g[1025],u[1025],a[1025],b[1025],n,k,r,m;
int main()
{
	int i,j,l,s1,s2,rez,aux;
	FILE *f=fopen("balanta.in","r");
	fscanf(f,"%d %d",&n,&m);
	for (i=1;i<=n;i++)
	    g[i]=u[i]=1;
	for (i=1;i<=m;i++)
	    { fscanf(f,"%d",&k);
	      for (j=1;j<=k;j++)
	      {	  fscanf(f,"%d",&aux);
		  a[aux]=1; }
	      for (j=1;j<=k;j++)
	      {	  fscanf(f,"%d",&aux);
		  b[aux]=1; }
	      fscanf(f,"%d",&r);
	      if (r==0)
	       for (j=1;j<=n;j++)
		 { if (a[j]) g[j]=u[j]=0;
		   if (b[j]) g[j]=u[j]=0;}
	      else
		if (r==1)
		{  for (j=1;j<=n;j++)
			if (g[j]&&!a[j]) g[j]=0;
		   for (j=1;j<=n;j++)
			if (u[j]&&!b[j]) u[j]=0; }
		else if (r==2)
			{  for (j=1;j<=n;j++)
				if (g[j]&&!b[j]) g[j]=0;
			 for (j=1;j<=n;j++)
				if (u[j]&&!a[j]) u[j]=0; }
	      for (j=1;j<=n;j++) a[j]=b[j]=0;
	      }
	fclose(f);
	for (s1=0,s2=0,rez=0,i=1;i<=n;i++)
		{ s1+=g[i];
		  s2+=u[i];
		  if (g[i]) rez=i;
		  if (u[i]) rez=i; }
	FILE *g=fopen("balanta.out","w");
	if (s1==1&&s2==0||s1==0&&s2==1)
		fprintf(g,"%d\n",rez);
	else fprintf(g,"0\n");
	fclose(g);
	return 0;
}