Cod sursa(job #25290)

Utilizator andytrAlexandru Traista andytr Data 4 martie 2007 11:50:16
Problema Balanta Scor 40
Compilator cpp Status done
Runda preONI 2007, Runda 3, Clasa a 10-a Marime 0.98 kb
#include <stdio.h>

int v[1025];

void set(int x[],int l,int v)
{int i;
for(i=1;i<=l;i++)
 {if(v==-1)
    ::v[x[i]]=v;
   else
    if(::v[x[i]]!=-1)
     ::v[x[i]]=v;
 }
}

int unic(int l)
{int i,j,nr,y,nru=0;
for(i=-1;i<=2;i++)
 {nr=0;
  for(j=1;j<=l;j++)
   if(v[j]==i)
    {nr++;
     y=j;
     if(nr>1)
      break;
    }
  if(nr==1)
   nru++;
  if(nru>1)
   return 0;
 }
return nr==1?y:0;
}

int main()
{int j,n,m,i,nr,op,bs[515],bd[515];
FILE *fin=fopen("balanta.in","r");
FILE *fout=fopen("balanta.out","w");
fscanf(fin,"%d %d",&n,&m);
for(i=1;i<=m;i++)
 {fscanf(fin,"%d",&nr);
  for(j=1;j<=nr;j++)
   fscanf(fin,"%d",&bs[j]);
  for(j=1;j<=nr;j++)
   fscanf(fin,"%d",&bd[j]);
  fscanf(fin,"%d",&op);
  if(op==0)
   {set(bs,nr,-1);
    set(bd,nr,-1);
   }
  if(op==1)
   {set(bs,nr,2);
    set(bd,nr,1);
   }
  if(op==2)
   {set(bd,nr,2);
    set(bs,nr,1);
   }
 }
fprintf(fout,"%d",unic(n));
fclose(fout);
fclose(fin);
return 0;
}