Cod sursa(job #1168275)

Utilizator radu_cebotariRadu Cebotari radu_cebotari Data 7 aprilie 2014 19:46:12
Problema Balanta Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 2.64 kb
#include<fstream>
using namespace std;
int h[1025],l[1025],n,m,l1,h1,k,b[700],a[700],r,p,aux[1025],aux1[1025];

int main()
{

    ifstream in("balanta.in");
    ofstream out("balanta.out");
    in>>n>>m;
    int i;
    l1 = n;
    h1 = n;
    for(i = 1 ; i <= n ; i++)
    {
        h[i] = i;
        l[i] = i;
    }
    for( ; m ; --m)
    {
        for(i = 1 ; i <= n ; i++)
        {
            aux[i] = 0;
            aux1[i] = 0;
        }
        in>>k;
        for( i = 1 ; i<= k; i++)
            in>>a[i];
        for(i=1 ; i <= k ; i++)
            in>>b[i];
        in>>r;
        if(!r)
            for( i = 1 ; i <= k ; i++)
            {
                if(h[a[i]] != 0) {h[a[i]] = 0 ; h1--;}
                if(h[b[i]] != 0) {h[b[i]] = 0 ; h1--;}
                if(l[a[i]] != 0) {l[a[i]] = 0 ; l1--;}
                if(l[b[i]] != 0) {l[b[i]] = 0 ; l1--;}
            }
        if(r == 1)
        {

            for( i = 1 ; i <= k ; i++)
                    for( p = 1 ; p <= n ; p++)
                        if(a[i] == h[p])
                            aux[p] = h[p];
             for( i = 1 ; i <= n ; i++)
             {
                        if(h[i] != aux[i]) h1--;
                        h[i] = aux[i];
             }

             for( i = 1 ; i <= k ; i++)
                    for( p = 1 ; p <= n ; p++)
                        if(b[i] == l[p])
                            aux1[p] = l[p];
             for( i = 1 ; i <= n ; i++)
             {
                        if(l[i] != aux1[i]) l1--;
                        l[i] = aux1[i];
             }
        }
        if(r==2){
            for( i = 1 ; i <= k ; i++)
                    for( p = 1 ; p <= n ; p++)
                        if(b[i] == h[p])
                            aux[p] = h[p];
             for( i = 1 ; i <= n ; i++)
             {
                        if(h[i] != aux[i]) h1--;
                        h[i] = aux[i];
             }

             for( i = 1 ; i <= k ; i++)
                    for( p = 1 ; p <= n ; p++)
                        if(a[i] == l[p])
                            aux1[p] = l[p];
             for( i = 1 ; i <= n ; i++)
             {
                        if(l[i] != aux1[i]) l1--;
                        l[i] = aux1[i];
             }
        }
    }
    int sol;
    if(l1==1 && h1 == 0)
    for(i = 1 ; i <= n ; i++){
        if(l[i] != 0){
            out<<l[i];
            return 0;
        }
    }
    if(l1 == 0 && h1 == 1)
    for(i = 1 ; i <= n ; i++){
        if(h[i] != 0){
            out<<h[i];
            return 0;
        }
    }
    out<<0;
    return 0;
}