Cod sursa(job #498731)

Utilizator Magnuscont cu nume gresit sau fals Magnus Data 5 noiembrie 2010 20:47:14
Problema Balanta Scor 50
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.37 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)
        for (i=1;i<=n;++i)
            if (p[i]) printf("%d",i);
    else if (okq==1)
        for (i=1;i<=n;++i)
            if (q[i]) printf("%d",i);
    else printf("0");
    return 0;
}