Cod sursa(job #1061952)

Utilizator Athena99Anghel Anca Athena99 Data 20 decembrie 2013 15:20:59
Problema Balanta Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 2.04 kb
#include <fstream>

using namespace std;

ifstream fin("balanta.in");
ofstream fout("balanta.out");

const int nmax= 1024;

int a[nmax+1], b[nmax+1];
int x[nmax+1], y[nmax+1];

int main(  ) {
    int n;
    fin>>n;
    for ( int i= 1; i<=n; ++i ) {
        x[i]= y[i]= 1;
    }

    int m;
    fin>>m;
    for ( ; m>0; --m ) {
        int k;
        fin>>k;

        for ( int i= 1; i<=k; ++i ) {
            fin>>a[i];
        }
        for ( int i= 1; i<=k; ++i ) {
            fin>>b[i];
        }

        int r;
        fin>>r;
        if ( r==0 ) {
            for ( int i= 1; i<=k; ++i ) {
                x[a[i]]= x[b[i]]= y[a[i]]= y[b[i]]= 0;
            }
        } else {
            if ( r==1 ) {
                for ( int i= 1; i<=k; ++i ) {
                    if ( x[a[i]]!=0 ) {
                        x[a[i]]= -1;
                    }
                    if ( y[b[i]]!=0 ) {
                        y[b[i]]= -1;
                    }
                }
            } else {
                 for ( int i= 1; i<=k; ++i ) {
                    if ( y[a[i]]!=0 ) {
                        y[a[i]]= -1;
                    }
                    if ( x[b[i]]!=0 ) {
                        x[b[i]]= -1;
                    }
                }
            }

            for ( int i= 1; i<=n; ++i ) {
                if ( x[i]==-1 ) {
                    x[i]= 1;
                } else {
                    x[i]= 0;
                }
                if ( y[i]== -1 ) {
                    y[i]= 1;
                } else {
                    y[i]= 0;
                }
            }
        }
    }

    int k1= 0, k2= 0, x1= 0, x2= 0;
    for ( int i= 1; i<=n; ++i ) {
        if ( x[i]==1 ) {
            x1= i;
            ++k1;
        }
        if ( y[i]==1 ) {
            x2= i;
            ++k2;
        }
    }

    int sol= 0;
    if ( k1==1 && k2==0 ) {
        sol= x1;
    } else if ( k1==0 && k2==1 ) {
        sol= x2;
    }

    fout<<sol<<"\n";

    return 0;
}