Cod sursa(job #498732)

Utilizator Magnuscont cu nume gresit sau fals Magnus Data 5 noiembrie 2010 20:50:21
Problema Balanta Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.36 kb
#include <stdio.h>

int n,m,p[1025],q[1025],v[1025],t[1025],okp,okq,i,j,k,x;

int main()
{
    freopen("balanta.in","r",stdin);
    freopen("balanta.out","w",stdout);
    scanf("%d%d",&n,&m);
    for (i=1;i<=n;++i) {p[i]=1;q[i]=1;}
    for (i=1;i<=m;++i)
    {
        scanf("%d",&k);
        for (j=1;j<=2*k;++j) scanf("%d",&v[j]);
        scanf("%d",&x);
        if (!x) for (j=1;j<=2*k;++j) {p[v[j]]=0;q[v[j]]=0;}
        else if (x==1)
        {
            for (j=1;j<=n;++j) t[j]=0;
            for (j=1;j<=k;++j) t[v[j]]=1;
            for (j=1;j<=n;++j) p[j]=t[j]*p[j];
            for (j=1;j<=n;++j) t[j]=0;
            for (j=k+1;j<=2*k;++j) t[v[j]]=1;
            for (j=1;j<=n;++j) q[j]=t[j]*q[j];
        }
        else
        {
            for (j=1;j<=n;++j) t[j]=0;
            for (j=k+1;j<=2*k;++j) t[v[j]]=1;
            for (j=1;j<=n;++j) p[j]=t[j]*p[j];
            for (j=1;j<=n;++j) t[j]=0;
            for (j=1 ;j<=k;++j) t[v[j]]=1;
            for (j=1;j<=n;++j) q[j]=t[j]*q[j];
        }
    }
    for (i=1;i<=n;++i) if (p[i]) ++okp;
    for (i=1;i<=n;++i) if (q[i]) ++okq;
    if ((okp==1)&&!okq)
    {
        for (i=1;i<=n;++i)
            if (p[i]) printf("%d",i);
    }
    else if ((okq==1)&&!okp)
    {
        for (i=1;i<=n;++i)
            if (q[i]) printf("%d",i);
    }
    else printf("0");
    return 0;
}