Cod sursa(job #68989)

Utilizator DastasIonescu Vlad Dastas Data 30 iunie 2007 15:52:07
Problema Balanta Scor 90
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.73 kb
#include <cstdio>
#define max 1024

FILE *in = fopen("balanta.in","r"), *out = fopen("balanta.out","w");

int n, m;
int k;
int r;

int H[max], L[max];
int A[max], B[max];

int main()
{
    fscanf(in, "%d %d", &n, &m);

    for ( int i = 1; i <= n; ++i )
        H[i] = L[i] = i;

    for ( int i = 0; i < m; ++i )
    {
        int EA[max+1] = {0};
        int EB[max+1] = {0};
        fscanf(in, "%d", &k);
        for ( int i = 0; i < k; ++i )
            fscanf(in, "%d", &A[i]), EA[A[i]] = 1;
        for ( int i = 0; i < k; ++i )
            fscanf(in, "%d", &B[i]), EB[B[i]] = 1;
        fscanf(in, "%d", &r);

        if ( r == 0 )
        {
            for ( int i = 1; i <= n; ++i )
                if ( EA[i] || EB[i] )
                    H[i] = -1, L[i] = -1;
        }
        else if ( r == 1 )
        {
            for ( int i = 1; i <= n; ++i )
            {
                if ( !(EA[i] && H[i]) )
                    H[i] = -1;
                if ( !(EB[i] && L[i]) )
                    L[i] = -1;
            }
        }
        else
        {
            for ( int i = 1; i <= n; ++i )
            {
                if ( !(EB[i] && H[i]) )
                    H[i] = -1;
                if ( !(EA[i] && L[i]) )
                    L[i] = -1;
            }
        }
    }

    int a = 0, b = 0;
    int poza = 0, pozb = 0;
    for ( int i = 1; i <= n; ++i )
    {
        if ( H[i] != -1 )
            ++a, poza = i;
        if ( L[i] != -1 )
            ++b, pozb = i;
    }

    if ( a == 1 && b == 0 )
        fprintf(out, "%d\n", poza);
    else if ( a == 0 && b == 1 )
        fprintf(out, "%d\n", pozb);
    else
        fprintf(out, "%d\n", 0);


	return 0;
}