Cod sursa(job #726511)

Utilizator BlaugranasEnal Gemaledin Blaugranas Data 27 martie 2012 11:54:59
Problema Balanta Scor 50
Compilator cpp Status done
Runda Arhiva de probleme Marime 2.47 kb
#include<cstdio>
#define N 515
int n,m,a[N],b[N],h[2*N],l[2*N],i,k,t,j,e,c[N],d[N];
int main()
{FILE *f=fopen("balanta.in","r"),*g=fopen("balanta.out","w");
fscanf(f,"%d%d",&n,&m);
for(i=1;i<=n;i++)
     h[i]=l[i]=1;
while(m--)
     {fscanf(f,"%d",&k);
     for(i=1;i<=k;i++)
            fscanf(f,"%d",&a[i]);
     for(i=1;i<=k;i++)
            fscanf(f,"%d",&b[i]);
     a[k+1]=b[k+1]=n+1;
     fscanf(f,"%d",&t);
     if(!t)
            for(i=1;i<=k;i++)
                  h[a[i]]=h[b[i]]=l[a[i]]=l[b[i]]=0;
     else
            if(t==1)
                  {for(i=j=1;i<=n;)
                  if(h[i])
                         if(a[j]==i)
                                 h[i++]=1,j++;
                         else
                                 if(a[j]<i)
                                        j++;
                                 else
                                        h[i++]=0;
                  else
                         h[i++]=0;
                  for(i=j=1;i<=n;)
                  if(l[i])
                         if(b[j]==i)
                                 l[i++]=1,j++;
                         else
                                 if(b[j]<i)
                                        j++;
                                 else
                                        l[i++]=0;
                  else
                         l[i++]=0;}
            else
                  {for(i=j=1;i<=n;)
                  if(h[i])
                         if(b[j]==i)
                                 h[i++]=1,j++;
                         else
                                 if(b[j]<i)
                                        j++;
                                 else
                                        h[i++]=0;
                  else
                         h[i++]=0;
                  for(i=j=1;i<=n;)
                  if(l[i])
                         if(a[j]==i)
                                 l[i++]=1,j++;
                         else
                                 if(a[j]<i)
                                        j++;
                                 else
                                        l[i++]=0;
                  else
                         l[i++]=0;}}
for(j=e=0,i=1;i<=n;i++) 
     {if(h[i])
            c[++j]=i;
     if(l[i])
            d[++e]=i;}
if(j==1&&!e)
     fprintf(g,"%d",c[1]);
else
     if(!j&&e==1)
            fprintf(g,"%d",d[1]);
     else
            fprintf(g,"0");
return 0;}