Cod sursa(job #1669396)

Utilizator ciocan_catalinCiocan Catalin - Iulian ciocan_catalin Data 30 martie 2016 17:57:35
Problema Balanta Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.65 kb
#include <fstream>
#include <iostream>
using namespace std;
ifstream fin("balanta.in");
ofstream fout("balanta.out");
int n,m;
int H[1028],L[1028];
int a[1028],b[1028];
int main()
{
    int i,j,k,t;
    fin>>n>>m;
    for(i = 1; i <= n;i++) H[i] = L[i] = 1;
    for(j = 1; j <= m; j++)
    {
        fin>>k;
        for(i = 1; i <= k; i++)fin>>a[i];
        for(i = 1; i <= k; i++)fin>>b[i];
        fin>>t;
        if(t == 0)
        {
            for(i = 1; i <= k; i++)
                H[a[i]] = H[b[i]] = L[a[i]] = L[b[i]] = 0;
        }
        else if(t == 1)
        {
            for(i = 1; i <= k; i++)
            {
                H[a[i]] *=-1;
                L[b[i]] *=-1;
            }
            for(i = 1; i <= n; i++)
            {
                if(H[i] < 0) H[i]*=-1;
                else H[i] = 0;
                if(L[i] < 0) L[i]*=-1;
                else L[i] = 0;
            }
        }
        else
        {
            for(i = 1; i <= k; i++)
            {
                H[b[i]] *=-1;
                L[a[i]] *=-1;
            }
            for(i = 1; i <= n; i++)
            {
                if(H[i] < 0) H[i]*=-1;
                else H[i] = 0;
                if(L[i] < 0) L[i]*=-1;
                else L[i] = 0;
            }
        }
    }
    for(i = 1; i <= n; i++)
    {
        if(H[i]) H[0]++;
        if(L[i]) L[0]++;
    }
    if((H[0]==1 && !L[0])||(!H[0] && L[0]==1))
    {
        for(i = 1; i <= n; i++)
            if(H[i] || L[i])
        {
            fout<<i<<"\n";
            break;
        }
    }
    else fout<<"0\n";
    fout.close();
    return 0;
}