Cod sursa(job #57371)

Utilizator bogdanhm999Casu-Pop Bogdan bogdanhm999 Data 1 mai 2007 21:03:24
Problema Balanta Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.87 kb
#include <stdio.h>

int main(){
    freopen("balanta.in","r",stdin);
    freopen("balanta.out","w",stdout);
    
    long n,m,i,k,r,x,a[520],b[520],c1,c2,p;
    bool h[1025],l[1025],q[1025];
    
    scanf("%ld %ld",&n,&m);
    //initializare
    for (i=1;i<=n;i++){h[i]=1;l[i]=1;}
    for (p=1;p<=m;p++){
        
        scanf("%ld",&k);
        for (i=1;i<=k;i++)
            scanf("%ld",&a[i]);
        for (i=1;i<=k;i++)
            scanf("%ld",&b[i]);
        scanf("%ld",&r);

        //verificare
        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;
           }
        }
        if (r==1){
           //multimea H
           for (i=1;i<=n;i++)q[i]=0;
           for (i=1;i<=k;i++)
               if (h[a[i]])q[a[i]]=1;
           for (i=1;i<=n;i++)h[i]=q[i];
           //multimea L
           for (i=1;i<=n;i++)q[i]=0;
           for (i=1;i<=k;i++)
               if (l[b[i]])q[b[i]]=1;
           for (i=1;i<=n;i++)l[i]=q[i];
       }   
       if (r==2){
           //multimea H
           for (i=1;i<=n;i++)q[i]=0;
           for (i=1;i<=k;i++)
               if (h[b[i]])q[b[i]]=1;
           for (i=1;i<=n;i++)h[i]=q[i];
           //multimea L
           for (i=1;i<=n;i++)q[i]=0;
           for (i=1;i<=k;i++)
               if (l[a[i]])q[a[i]]=1;
           for (i=1;i<=n;i++)l[i]=q[i];
        }
        
    }
    c1=0;
    c2=0;
    for (i=1;i<=n;i++){if (h[i])c1++;if (l[i])c2++;}
    if ((c1==1&&!c2)||(!c1&&c2==1)){
       if (c1){for (i=1;i<=n;i++)
                   if (h[i])
                      printf("%ld\n",i);
              }
       else {
            for (i=1;i<=n;i++)
                if (l[i])
                   printf("%ld\n",i);
       }
    }
    else printf("%ld\n",0);
    
    return 0;
}