Cod sursa(job #26771)

Utilizator crusRus Cristian crus Data 5 martie 2007 21:10:01
Problema Balanta Scor 30
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.03 kb
#include <stdio.h>
#define input "balanta.in"
#define output "balanta.out"
#define nmax 1025
int g[nmax],s[nmax],u[nmax];
int n,m,i,j,k,r,val,sol,s1,s2,v1,v2;
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 (i=1;i<=m;i++)
		{
		 fscanf(fin,"%d",&k);
		 for (j=1;j<=2*k;j++)
			 fscanf(fin,"%d",&s[j]);
		 fscanf(fin,"%d",&r);

		 if (r==0)
			for (j=1;j<=2*k;j++) g[s[j]]=0;
			else
		 if (r==1)
			for (j=k+1;j<=2*k;j++) g[s[j]]=0;
		 else
			for (j=1;j<=k;j++) g[s[j]]=0;

		 if (r==0)
			for (j=1;j<=2*k;j++) u[s[j]]=0;
			else
		 if (r==1)
			for (j=1;j<=k;j++) u[s[j]]=0;
		 else
			for (j=k+1;j<=2*k;j++) u[s[j]]=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;
}