Cod sursa(job #26803)

Utilizator crusRus Cristian crus Data 5 martie 2007 21:30:18
Problema Balanta Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.33 kb
#include <stdio.h>
#include <string.h>
#define input "balanta.in"
#define output "balanta.out"
#define nmax 1025
int g[nmax],u[nmax],a[nmax],b[nmax];
int n,m,i,j,k,r,val,sol,s1,s2,v1,v2,x,k1;
int main()
{
	FILE *fin,*fout;
	fin=fopen(input,"r");
	fout=fopen(output,"w");
	fscanf(fin,"%d %d",&n,&m);
	for (i=1;i<=n;i++)
		{g[i]=1; u[i]=1;}	
	for (k1=1;k1<=m;k1++)
		{		 
		 fscanf(fin,"%d",&k);
		 memset(a,0,sizeof(a));
		 memset(b,0,sizeof(b));
		 for (j=1;j<=k;j++)
			{fscanf(fin,"%d",&x); a[x]=1;}
		 for (j=1;j<=k;j++)
			{fscanf(fin,"%d",&x); b[x]=1;}
		 fscanf(fin,"%d",&r);

		 r=r;

		 if (r==0)
			 for (i=1;i<=n;i++)		 
				 if (a[i]+b[i]>0) 
					{g[i]=0; u[i]=0;}
				    else;
		 else
		 if (r==1)
			 for (i=1;i<=n;i++)
				{
				 if (a[i]==g[i]&&a[i]==1) g[i]=1;
				    else g[i]=0;
				 if (b[i]==u[i]&&b[i]==1) u[i]=1;
				    else u[i]=0;
				}
		 else
			 for (i=1;i<=n;i++)
				{
				 if (a[i]==u[i]&&a[i]==1) u[i]=1;
				    else u[i]=0;
				 if (b[i]==g[i]&&b[i]==1) g[i]=1;
				    else g[i]=0;
				}			
		}
	v1=v2=s1=s2=0;
	for (i=1;i<=n;i++)
		if (g[i]) {v1++; s1=i;}
	for (i=1;i<=n;i++)
		if (u[i]) {v2++; s2=i;}
	fclose(fin);	
	if (v1==1&&v2==0) fprintf(fout,"%ld",s1);
	else
	if (v2==1&&v1==0) fprintf(fout,"%ld",s2);
	   else fprintf(fout,"0");
	fclose(fout);
	return 0;
}