Cod sursa(job #27038)

Utilizator kyrkDragos Dumitrescu kyrk Data 6 martie 2007 00:26:38
Problema Balanta Scor 40
Compilator cpp Status done
Runda Arhiva de probleme Marime 2.09 kb
#include<stdio.h>
main()
{
long n,m,i,s,j,k,sp,valid,aux,x,a[1050],b[1050],h[1050],l[1050];
long max,hmax,lmax;
FILE *f,*g;
f=fopen("balanta.in","r");
g=fopen("balanta.out","w");
fscanf(f,"%ld%ld",&n,&m);
for(i=1;i<=n;i++)
 { h[i]=i;
   l[i]=i;
 }
sp=1;
hmax=n;lmax=n;
do{
   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",&s);

if(s==0)
 { valid=0;
   j=1;i=1;
   do{
      do{
	  if(a[i]==h[j]){ if(h[j]!=-1){h[j]=-1;hmax--;} valid++;}
	  if(a[i]==l[j]){ if(l[j]!=-1){l[j]=-1;lmax--;} valid++;}
	  if(b[i]==h[j]){ if(h[j]!=-1){h[j]=-1;hmax--;} valid++;}
	  if(b[i]==l[j]){ if(l[j]!=-1){l[j]=-1;lmax--;} valid++;}
	  j++;
	 }while((valid<2)&&(j<=n));
      i++;j=1;
      }while(i<=k);
 }

if(s==1)
 {
  valid=0;
  i=1;j=1;
  do{
     valid=0;
     do{
	 if(a[i]==h[j])valid=1;
	 i++;
	}while((i<=k)&&(valid!=1));
     if(valid==0){ if(h[j]!=-1){ h[j]=-1;hmax--;} }

     i=1;
     j++;
    }while(j<=n);
  valid=0;
  i=1;j=1;
  do{
     valid=0;
     do{
	if(b[i]==l[j])valid=1;
	i++;
	}while((i<=k)&&(valid!=1));
     if(valid==0){if(l[j]!=-1){ l[j]=-1; lmax--;} }
     i=1;
     j++;
     }while(j<=n);
  }


if(s==2)
 {
  valid=0;
  i=1;j=1;
  do{
     do{
	 if(b[i]==h[j])valid=1;
	 i++;
	}while((i<=k)&&(valid!=1));
     if(valid==0){if(h[j]!=-1) { h[j]=-1;hmax--; }  }

     i=1;
     j++;
    }while(j<=n);
  valid=0;
  i=1;j=1;
  do{
     do{
	if(a[i]==l[j])valid=1;
	i++;
	}while((i<=k)&&(valid!=1));
     if(valid==0){ if(l[j]!=-1){ l[j]=-1;lmax--;}  }
     i=1;
     j++;
     }while(j<=n);
  }

 sp++;
}while(sp<=m);

x=0;

if((hmax==1)&&(lmax==0))
{
 x=1;
 i=1;valid=0;
 do{
    if(h[i]>=1){ max=a[i];valid=1; }
    i++;
    }while((i<=n)&&(valid!=1));
}
if((hmax==0)&&(lmax==1))
{
 x=1;
 i=1;valid=0;
 do{
    if(l[i]>=1){ max=l[i];valid=1; }
    i++;
    }while((i<=n)&&(valid!=1));
}

if(x==0)fprintf(g,"%ld",x);
else fprintf(g,"%ld",max);

fclose(f);
fclose(g);
return 0;
}