Cod sursa(job #26878)

Utilizator crawlerPuni Andrei Paul crawler Data 5 martie 2007 22:09:36
Problema Balanta Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.46 kb
#include <stdio.h>
#include <math.h>
#include <string.h>
#define fin "balanta.in"
#define fout "balanta.out"
#define FOR(i,a,b) for( i = (a) ; i <= (b) ; ++i )

int v[1025], st[513],dr[513];
int big[1025],small[1025];

int main()
 {
   freopen(fin,"r",stdin);
   freopen(fout,"w",stdout);

   int n,m,k,i,j,r,stx,drx;

   scanf("%i%i", &n,&m);

   FOR(i,1,n)
    small[i] = big[i] = 1;

   FOR(i,1,m)
    {
     scanf("%i",&k);
     
     memset(&st,0,sizeof(st));
     memset(&dr,0,sizeof(dr));

     FOR(j,1,k)
      scanf("%i",&stx), st[stx] = 1;

     FOR(j,1,k)
      scanf("%i",&drx), dr[drx] = 1;;

     scanf("%i",&r);

     if(r == 0)
      FOR(j,1,n)
       if((st[j])||(dr[j]))
         big[j] = small[j] = 0;

     if(r == 2)
      FOR(j,1,n)
       {
        small[j] &= st[j];
        big[j] &= dr[j];
       }
       
     if(r == 1)
      FOR(j,1,n)
       {
        small[j] &= dr[j];
        big[j] &= st[j];
       }
    }

   stx = 0;
   drx = 0; 
    
   FOR(i,1,n)
    {
     stx+=st[i];
     drx+=dr[i];        
    }
    
   if((stx == 1)&&(drx == 1)) 
    {
     FOR(i,1,n)      
      if(st[i])
       {
        printf("%d\n", i);
        return 0;        
       }
    }

   if((stx == 0)&&(drx == 1)) 
    {
     FOR(i,1,n)      
      if(dr[i])
       {
        printf("%d\n", i);
        return 0;        
       }
    }
   printf("0\n");

   return 0;
 }

//by Crawler