Cod sursa(job #335403)

Utilizator freak93Adrian Budau freak93 Data 29 iulie 2009 20:46:19
Problema Balanta Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.58 kb
#include<fstream>
#include<cstring>

using namespace std;

ifstream f("balanta.in");
ofstream g("balanta.out");

const int maxn=1224;

int n,m,r,k,i,j,a[maxn],b[maxn],h[maxn],l[maxn],x,y;

int main()
{
    f>>n>>m;
    for(i=1;i<=n;++i)
        h[i]=l[i]=1;
    for(i=1;i<=m;++i)
    {
        f>>k;
        memset(a,0,sizeof(a));
        memset(b,0,sizeof(b));
        for(j=1;j<=k;++j)
        {
            f>>x;
            a[x]=1;
        }
        for(j=1;j<=k;++j)
        {
            f>>x;
            b[x]=1;
        }
        f>>r;
        if(r==0)
            for(j=1;j<=n;++j)
            {
                if(a[j])
                    h[j]=l[j]=0;
                if(b[j])
                    h[j]=l[j]=0;
            }
        if(r==1)
            for(j=1;j<=n;++j)
            {
                if(!a[j])
                    h[j]=0;
                if(!b[j])
                    l[j]=0;
            }
        if(r==2)
            for(j=1;j<=n;++j)
            {
                if(!a[j])
                    l[j]=0;
                if(!b[j])
                    h[j]=0;
            }
    }

    x=0;
    y=0;

    for(i=1;i<=n;++i)
        x+=h[i];
    for(i=1;i<=n;++i)
        y+=l[i];
    if(x==1&&y==0)
    {
        for(i=1;i<=n;++i)
            if(h[i])
                g<<i<<"\n";
    }
    else
        if(x==0&&y==1)
        {
            for(i=1;i<=n;++i)
                if(l[i])
                    g<<i<<"\n";
        }
    else
        g<<0<<"\n";

    f.close();
    g.close();

    return 0;
}