Cod sursa(job #2102242)

Utilizator osiaccrCristian Osiac osiaccr Data 8 ianuarie 2018 16:12:12
Problema Balanta Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.92 kb
#include <fstream>
#define DEF 1050

using namespace std;

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

int n, m, k, r, A[DEF], B[DEF], H[DEF], L[DEF];

int main () {
    fin >> n >> m;

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

    for (int i = 1; i <= m; ++ i) {
        fin >> k;
        for (int j = 1; j <= k; ++ j) {
            int x;
            fin >> x;
            A[x] = 1;
        }
        for (int j = 1; j <= k; ++ j) {
            int x;
            fin >> x;
            B[x] = 1;
        }
        fin >> r;
        if (r == 0) {
            for (int j = 1; j <= n; ++ j) { // H - A - B si L - A - B
                if (A[j] || B[j])
                    H[j] = L[j] = 0;
            }
        }
        if (r == 1) { // H ^ A si L ^ B
            for (int j = 1; j <= n; ++ j) {
                if (!(H[j] && A[j]))
                    H[j] = 0;
                if (!(L[j] && B[j])) {
                    L[j] = 0;
                }
            }
        }
        if (r == 2) { // H ^ B si L ^ A
            for (int j = 1; j <= n; ++ j) {
                if (!(L[j] && A[j]))
                    L[j] = 0;
                if (!(H[j] && B[j])) {
                    H[j] = 0;
                }
            }
        }

        for (int j = 1; j <= n; ++ j) {
            A[j] = B[j] = 0;
        }
    }

    int l = 0, h = 0;
    for (int i = 1; i <= n; ++ i) {
        if (H[i]) {
            if (h) {
                fout << 0;
                return 0;
            }
            h = i;
        }
        if (L[i]) {
            if (l) {
                fout << 0;
                return 0;
            }
            l = i;
        }
    }

    if (h && !l)
        fout << h;

    if (!h && l)
        fout << l;

    if (h && l)
        fout << 0;

    if (!h && !l)
        fout << 0;

    return 0;
}