Cod sursa(job #1038640)

Utilizator Impaler_009Mihai Nitu Impaler_009 Data 21 noiembrie 2013 20:49:54
Problema Balanta Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.75 kb
#include <fstream>
#include <cstring>

#define maxn 1024

using namespace std;

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

int a[maxn],b[maxn];
bool usea[maxn],useb[maxn],high[maxn],low[maxn];
int k,c,wh,wl,n,m;

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

    memset (high,1,sizeof(high));
    memset (low,1,sizeof(low));

    for (int i=1; i<=m; ++i)
    {
        fin>>k;

        memset (usea,0,sizeof(usea));
        memset (useb,0,sizeof(useb));

        for (int i=1; i<=k; ++i)
        {
            fin>>a[i];
            usea[a[i]] = 1;
        }

        for (int i=1; i<=k; ++i)
        {
            fin>>b[i];
            useb[b[i]] = 1;
        }

        fin>>c;

        if (c==0)
        {
            for (int i=1; i<=k; ++i)
            {
                high[a[i]] = 0;
                low[a[i]] = 0;
                high[b[i]] = 0;
                low[b[i]] = 0;
            }
        }
        else if (c==1)
        {
            for (int i=1; i<=n; ++i)
            {
                if (!usea[i]) high[i] = 0;
                if (!useb[i]) low[i] = 0;
            }
        }
        else
        {
            for (int i=1; i<=n; ++i)
            {
                if (!usea[i]) low[i] = 0;
                if (!useb[i]) high[i] = 0;
            }
        }
    }

    for (int i=1; i<=n; ++i)
    {
        if (high[i])
        {
            if (!wh)
            {
                wh = i;
            }
            else wh = 0;
        }

        if (low[i])
        {
            if (!wl)
            {
                wl = i;
            }
            else wl = 0;
        }
    }

    if (wh && !wl) fout<<wh;
    else if (wl && !wh) fout<<wl;
    else fout<<0;
}