Cod sursa(job #1658872)

Utilizator TimoteiCopaciu Timotei Timotei Data 21 martie 2016 20:45:05
Problema Balanta Scor 90
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.42 kb
#include <fstream>
#include <bitset>
using namespace std;
ifstream f("balanta.in");
ofstream g("balanta.out");
int n, m, a[1027], el, k, r, v[1027], s;
int main()
{
    f >> n >> m;
    for(int i = 1; i <= m; i++){
        f >> k;
        for(int j = 1; j <= 2 * k; j++) f >> a[j];
        f >> r;
        if(r == 0)
            for(int j = 1; j <= 2 * k; j++) v[a[j]] = 3;
        if(r == 1){
            s = el = 0;
            for(int j = 1; j <= k; j++){
                if(v[a[j]] == 2)s++, el = a[j];
                else if(v[a[j]] == 0) v[a[j]] = 2;
            }
            for(int j = k + 1; j <= 2 * k; j++){
                if(v[a[j]] == 1) s++, el = a[j];
                else if(v[a[j]] == 0) v[a[j]] = 1;
            }
            if(s == 1) {g << el; return 0;}
        }
       if(r == 2){
            s = el = 0;
            for(int j = 1; j <= k; j++){
                if(v[a[j]] == 1)s++, el = a[j];
                else if(v[a[j]] == 0) v[a[j]] = 1;
            }
            for(int j = k + 1; j <= 2 * k; j++){
                if(v[a[j]] == 2) s++, el = a[j];
                else if(v[a[j]] == 0) v[a[j]] = 2;
            }
            if(s == 1) {g << el; return 0;}
        }
    }
    s = 0;
    for(int i = 1; i <= n; i++)
        if(v[i] == 3) s++;
    if(n - s == 1){
    for(int i = 1; i <= n; i++)
        if(v[i] == 0) g << i;
    }
    else g << 0;
    return 0;
}