Cod sursa(job #996833)

Utilizator DorelBarbuBarbu Dorel DorelBarbu Data 12 septembrie 2013 18:44:40
Problema Balanta Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 3.24 kb
#include <cstdio>
#include <iostream>
#define MAX 1030
#include <cstring>
#include <fstream>
using namespace std;

bool h[MAX] , l[MAX] , a[MAX] , b[MAX] ;


void scrie(bool v[MAX], int n )
{
    int i ;

    for( i=1; i<=n; i++)
    {
        cout<<v[i]<<' ';
    }
}

int main()
{
    freopen("balanta.in", "r", stdin);
    freopen("balanta.out", "w", stdout);

    int  n , m , k , r , i , x , j , card_h , card_l ;

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

    for( i = 1 ; i <= n ; i++ )
    {
        h[i] = 1 ;

        l[i] = 1 ;
    }

    card_h = n ;

    card_l = n ;

    for( i=1 ; i<=m ; i++ )
    {
        scanf("%d", &k);

        for( j = 1 ; j <= k ; j++ )
        {
            scanf("%d", &x);

            a[x] = 1;
        }

        for( j ; j <= 2*k ; j++ )
        {
            scanf("%d", &x);

            b[x] = 1;
        }

        scanf("%d", &r);

        if( r == 0 )
        {
            for( j = 1 ; j <= n ; j++ )
            {
                if( a[j] || b[j] )
                {

                    if( h[j] == 1)
                    {
                        h[j]=0;

                        card_h--;
                    }

                    if( l[j] == 1)
                    {
                        l[j]=0;

                        card_l--;
                    }


                }

                a[j] = 0 , b[j] = 0;
            }
        }
        else if( r == 1 )
        {
            for( j = 1 ; j <= n ; j++ )
            {
                if( h[j] != a[j] )
                {
                    if( h[j] == 1)
                    {
                        h[j]=0;

                        card_h--;
                    }
                }

                if( l[j] != b[j] )
                {
                    if( l[j] == 1)
                    {
                        l[j]=0;

                        card_l--;
                    }
                }

                a[j] = 0 , b[j] = 0;
            }
        }
        else
        {
            for( j = 1; j <= n; j++ )
            {
                if( h[j] != b[j] )
                {
                    if( h[j] == 1)
                    {
                        h[j]=0;

                        card_h--;
                    }
                }

                if( l[j] != a[j] )
                {
                    if( l[j] == 1)
                    {
                        l[j]=0;

                        card_l--;
                    }
                }

                a[j] = 0 , b[j] = 0;
            }
        }
    }


    if( card_h == 1 && card_l == 0 )
    {
        for ( i = 1 ; i <= n ; i++ )
        {
            if( h[i] == 1 )
            {
                printf("%d", i);

                return 0;
            }
        }
    }
    else
    {
        if( card_h == 0 && card_l == 1 )
        {
            for ( i = 1 ; i <= n ; i++ )
            {
                if( l[i] == 1 )
                {
                    printf("%d", i);

                    return 0;
                }
            }
        }
        else
        {
            printf("0");
        }
    }

    return 0 ;
}