Cod sursa(job #1551231)

Utilizator george.stefanGeorge Stefan george.stefan Data 15 decembrie 2015 15:52:40
Problema Balanta Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 2.04 kb
#include <iostream>
#include <stdio.h>

const int L = 2000;

using namespace std;

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

    ios_base::sync_with_stdio(false);
    cin.tie(0);

    bool greu[L], usor[L];

    for(int i = 1; i < L; i ++)
        {
            greu[i] = 1;
            usor[i] = 1;
        }

    int n, m, q, ban[L], x;

    cin >> n >> m;

    for(int i = 0; i < m; i ++)
    {
        cin >> q;

        for(int j = 1; j <= n; j ++)
            ban[j] = 0;

        for(int j = 0; j < q; j ++)
        {
            cin >> x;

            ban[x] = 1;
        }

        for(int j = 0; j < q; j ++)
        {
            cin >> x;

            ban[x] = 2;
        }

        cin >> x;

        if(x == 0)
        {
            for(int j = 1; j <= n; j ++)
            {
                if(ban[j])
                    {
                         greu[j] = 0;
                         usor[j] = 0;
                    }
            }
        }

        if(x == 1)
        {
            for(int j = 1; j <= n; j ++)
            {
                if(ban[j] != 2)
                    usor[j] = 0;

                if(ban[j] != 1)
                    greu[j] = 0;
            }
        }

        if(x == 2)
        {
            for(int j = 1; j <= n; j ++)
            {
                if(ban[j] != 1)
                    usor[j] = 0;

                if(ban[j] != 2)
                    greu[j] = 0;
            }
        }
    }

    int nr_g = 0, nr_u = 0, poz_g, poz_u;

    for(int i = 1; i <= n; i ++)
    {
        if(greu[i])
        {
            nr_g ++;
            poz_g = i;
        }

        if(usor[i])
        {
            nr_u ++;
            poz_u = i;
        }
    }

    if(nr_g == 1 && !nr_u)
        {
            cout << poz_g;
        }
        else if(!nr_g && nr_u == 1)
            {
                cout << poz_u;
            }
            else cout << 0;

    return 0;
}