Cod sursa(job #1061306)

Utilizator SagunistuStrimbu Alexandru Sagunistu Data 19 decembrie 2013 16:01:28
Problema Balanta Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 2.64 kb
#include <iostream>
#include <fstream>
#include <cstring>

using namespace std;

bool a[1100],a1[1100];
int s[1100],d[1100],n;

int main()
{
    ifstream fin("balanta.in");
    ofstream fout("balanta.out");
    int n,m,i,j,k,r,p,nr=0,nr1=0,p1,l;
    bool ok=0;
    fin>>n>>m;
    for(i=1;i<=m;i++)
    {
        fin>>k;
        for(j=1;j<=k;j++)
            fin>>s[j];
        for(j=1;j<=k;j++)
            fin>>d[j];
        fin>>r;
        if(r==0)
        {
            for(j=1;j<=k;j++)
            {
                a[s[j]]=0;
                a[d[j]]=0;
                a1[s[j]]=0;
                a1[d[j]]=0;
            }
        }
        else
        if(r==1)
        {
            if(!ok)
            {
                memset(a,0,sizeof(a));
                memset(a1,0,sizeof(a1));
                for(j=1;j<=k;j++)
                {
                    a[s[j]]=1;
                    a[d[j]]=0;
                    a1[s[j]]=0;
                    a1[d[j]]=1;
                }
            }
            else
            {
                for(j=1;j<=k;j++)
                    for(l=1;l<=n;l++)
                {
                    if(l!=s[j])
                        a[l]=0;
                }
                for(j=1;j<=k;j++)
                    for(l=1;l<=n;l++)
                {
                    if(l!=d[j])
                        a1[l]=0;
                }
            }
            ok=1;
        }
        else
        if(r==2)
        {
            if(!ok)
            {
                memset(a,0,sizeof(a));
                memset(a1,0,sizeof(a1));
                for(j=1;j<=k;j++)
                {
                    a[s[j]]=0;
                    a[d[j]]=1;
                    a1[s[j]]=1;
                    a1[d[j]]=0;
                }
            }
            else
            {
                for(j=1;j<=k;j++)
                    for(l=1;l<=n;l++)
                {
                    if(l!=s[j])
                        a1[l]=0;
                }
                for(j=1;j<=k;j++)
                    for(l=1;l<=n;l++)
                {
                    if(l!=d[j])
                        a[l]=0;
                }
            }
            ok=1;
        }
    }
    for(i=1;i<=n;i++)
    {
        if(a[i])
        {
            nr++;
            p=i;
        }
    }
    for(i=1;i<=n;i++)
        {
            if(a1[i])
            {
                nr1++;
                p1=i;
            }
        }
    if(nr==1&&nr1==0)
        fout<<p;
    else
    if(nr==0&&nr1==1)
        fout<<p1;
    else
        fout<<0;
    return 0;
}