Cod sursa(job #28460)

Utilizator devilkindSavin Tiberiu devilkind Data 7 martie 2007 20:56:56
Problema Balanta Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.96 kb
#include <stdio.h>
#include <string.h>
#define NMAX 1025

FILE *f = fopen("balanta.in","rt"), *g = fopen("balanta.out","wt");

long int L[NMAX],H[NMAX],i,j,k,n,v1[NMAX],v2[NMAX],m,r,hash[NMAX];

void citire()
{
fscanf(f,"%ld %ld",&n,&m);
H[0]=n;
L[0]=n;
for (i=1;i<=n;i++)
    {L[i]=1;H[i]=1;}
for (i=1;i<=m;i++)
     {
     fscanf(f,"%ld",&k);  
     for (j=1;j<=k;j++) fscanf(f,"%ld",&v1[j]);          
     for (j=1;j<=k;j++) fscanf(f,"%ld",&v2[j]);
     fscanf(f,"%ld",&r);
     if (r==1) {
                memset(hash,0,sizeof(hash));
                for (j=1;j<=k;j++)  
                    hash[v1[j]]=1;
                for (j=1;j<=n;j++)
		    H[j]=H[j]&&hash[j];

		memset(hash,0,sizeof(hash));
		for (j=1;j<=k;j++)
		    hash[v2[j]]=1;
		for (j=1;j<=n;j++)
		    L[j]=L[j]&&hash[j];
		L[0]=0;H[0]=0;
		for (j=1;j<=n;j++)
		    {
		    L[0]+=L[j];
		    H[0]+=H[j];
		    }
	       }
     if (r==2) {
		memset(hash,0,sizeof(hash));
		for (j=1;j<=k;j++)
		    hash[v2[j]]=1;
		for (j=1;j<=n;j++)
		    H[j]=H[j]&&hash[j];

		memset(hash,0,sizeof(hash));
		for (j=1;j<=k;j++)
		    hash[v1[j]]=1;
		for (j=1;j<=n;j++)
		    L[j]=L[j]&&hash[j];
		L[0]=0;H[0]=0;
		for (j=1;j<=n;j++)
		    {
		    L[0]+=L[j];
		    H[0]+=H[j];
		    }
	       }
     if (r==0) {
               for (j=1;j<=k;j++)
                   {
                   L[v1[j]]=0;
                   L[v2[j]]=0;
                   H[v1[j]]=0;
                   H[v2[j]]=0;
                   }
               L[0]=0;H[0]=0;
               for (j=1;j<=n;j++)
                    {
                    L[0]+=L[j];
		    H[0]+=H[j];
                    }
               }
     }
                    
}

int main()
{
citire();
if ((L[0]==1)&&(H[0]==0)) for (i=1;i<=n;i++)
			      if (L[i]==1) {fprintf(g,"%ld",i);return 0;}
if ((L[0]==0)&&(H[0]==1)) for (i=1;i<=n;i++)
			      if (H[i]==1) {fprintf(g,"%ld",i);return 0;}
fprintf(g,"0");
return 0;
}