Cod sursa(job #1333353)

Utilizator chiriacandrei25Chiriac Andrei chiriacandrei25 Data 3 februarie 2015 00:32:57
Problema Balanta Scor 30
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.59 kb
#include <cstdio>

using namespace std;

int main()
{
    int n,m,cnt,val,rez,k,a[3000],posgreu[3000],posusor[3000],i;
    freopen ("balanta.in","r",stdin);
    freopen ("balanta.out","w",stdout);
    scanf("%d%d", &n,&m);
    for(i=1;i<=n;++i) posgreu[i]=posusor[i]=1;
    while(m--)
    {
        scanf("%d", &k);
        for(i=1;i<=2*k;++i) scanf("%d", &a[i]);
        scanf("%d", &rez);
        if(!rez)
            for(i=1;i<=2*k;++i) posgreu[a[i]]=posusor[a[i]]=0;
        else
            if(rez==1)
            {
                for(i=1;i<=k;++i)
                    posgreu[a[i]]&=1;
                for(i=k+1;i<=2*k;++i)
                    posgreu[a[i]]=0;
                for(i=k+1;i<=2*k;++i)
                    posusor[a[i]]&=1;
                for(i=1;i<=k;++i)
                    posusor[a[i]]=0;
            }
            else
            {
                for(i=k+1;i<=2*k;++i)
                    posgreu[a[i]]&=1;
                for(i=1;i<=k;++i)
                    posgreu[a[i]]=0;
                for(i=1;i<=k;++i)
                    posusor[a[i]]&=1;
                for(i=k+1;i<=2*k;++i)
                    posusor[a[i]]=0;
            }
    }
    for(i=1,cnt=0;i<=n;++i)
        if(posgreu[i])
        {
            ++cnt;
            val=i;
        }
    if(cnt==1)
        printf("%d\n", val);
    else
    {
        for(i=1,cnt=0;i<=n;++i)
            if(posusor[i])
            {
                ++cnt;
                val=i;
            }
        if(cnt==1) printf("%d\n", val);
        else printf("0\n");
    }
    return 0;
}