Cod sursa(job #1456050)

Utilizator GeiGeiGeorge Cioroiu GeiGei Data 29 iunie 2015 18:36:41
Problema Balanta Scor 80
Compilator cpp Status done
Runda Arhiva de probleme Marime 2.13 kb
#include <cstdio>
#include <iostream>
#include <vector>
#include <set>
#include <cmath>

using namespace std;

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

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

    int n, m, nmax = 1030;
    cin >> n >> m;
    bool normal[nmax], usor[nmax], greu[nmax], st[nmax], dr[nmax];
    for (int k = 0; k < m; k++) {
        int nr;
        for (int j = 1; j <= n; j++) {
            st[j] = dr[j] = false;
        }
        cin >> nr;
        for (int j = 0; j < nr; j++) {
            int aux;
            cin >> aux;
            st[aux] = true;
        }
        for (int j = 0; j < nr; j++) {
            int aux;
            cin >> aux;
            dr[aux] = true;
        }
        int poz;
        cin >> poz;
        if (poz == 0) {
            for (int i = 1; i <= n; i++) {
                if (st[i]) {
                    normal[i] = true;
                }
                if (dr[i]) {
                    normal[i] = true;
                }
            }
        } else if (poz == 1) {
            for (int i = 1; i <= n; i++) {
                if (st[i]) {
                    greu[i] = true;
                }
                if (dr[i]) {
                    usor[i] = true;
                }
                if (!st[i] && !dr[i]) {
                    normal[i] = true;
                }
            }
        } else {
            for (int i = 1; i <= n; i++) {
                if (st[i]) {
                    usor[i] = true;
                }
                if (dr[i]) {
                    greu[i] = true;
                }
                if (!st[i] && !dr[i]) {
                    normal[i] = true;
                }
            }
        }
    }
    int nr = 0, sol = 0;
    for (int i = 1; i <= n; i++) {
        if (greu[i] && usor[i]) {
            normal[i] = true;
        }
        if (!normal[i] && (greu[i] || usor[i])) {
            sol = i;
            nr++;
        }
    }
    if (nr == 1) {
        cout << sol;
    } else {
        cout << 0;
    }

    return 0;
}