Cod sursa(job #68986)

Utilizator gabitzish1Gabriel Bitis gabitzish1 Data 30 iunie 2007 15:46:05
Problema Balanta Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.38 kb
#include<stdio.h>
#include<string.h>
FILE*f=fopen("balanta.in","r");
FILE*g=fopen("balanta.out","w");
int main()
   {
   long j,m,n,k,a[1500],b[1500],h[1500],l[1500],i,r;
   fscanf(f,"%ld %ld",&n,&m);
   h[0]=0; l[0]=0;
   a[0]=0; b[0]=0;
   for(i=1;i<=n;++i) { h[i]=i; l[i]=i;}
   for(j=1;j<=m;++j)
        {
        fscanf(f,"%ld",&k);
        for(i=1;i<=k;++i) fscanf(f,"%ld",&a[i]);
        for(i=1;i<=k;++i) fscanf(f,"%ld",&b[i]);
        fscanf(f,"%ld",&r);
        if(r==0)
                {
                for(i=1;i<=k;++i)
                        {
                        h[a[i]]=0; h[b[i]]=0;
                        l[a[i]]=0; l[b[i]]=0;
			}
		 }
	else if (r==1)
		{
		for(i=1;i<=k;++i)
			{
			if(h[a[i]]!=0) h[a[i]]=-2;
			if(l[b[i]]!=0) l[b[i]]=-2;
			}
		for(i=1;i<=n;++i)
			{
			if(h[i]==-2) h[i]=i;
			else h[i]=0;

			if(l[i]==-2) l[i]=i;
			else l[i]=0;
			}
		}
	else
	       {
		for(i=1;i<=k;++i)
			{
			if(l[a[i]]!=0) l[a[i]]=-2;
			if(h[b[i]]!=0) h[b[i]]=-2;
			}
		for(i=1;i<=n;++i)
			{
			if(l[i]==-2) l[i]=i;
			else l[i]=0;

			if(h[i]==-2) h[i]=i;
			else h[i]=0;
			}
		}
      }
long p,nrh=0,nrl=0;
r=0;
for(i=1;i<=n;++i)
	{
	if(h[i]!=0) { nrh++; p=i;}
        if (l[i]!=0){ nrl++; r=i;}
        }
if(nrl==1&&nrh==0) fprintf(g,"%ld",r);
else if (nrl==0&&nrh==1) fprintf(g,"%ld",p);
else fprintf(g,"0");
return 0;}