Cod sursa(job #1513856)

Utilizator refugiatBoni Daniel Stefan refugiat Data 30 octombrie 2015 09:17:11
Problema Balanta Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 2.58 kb
#include<iostream>
#include<fstream>
#include<algorithm>
using namespace std;
//FILE*si=fopen("pom.in","r");
ifstream si("balanta.in");
ofstream so("balanta.out");
int gr[1026],tal1[514],tal2[514],l;
int main()
{
    int n,c;
    si>>n>>c;
    int i,j;
    int fel;

    for(i=0;i<c;++i)
    {
        si>>l;
        for(j=0;j<l;++j)
            si>>tal1[j];
        for(j=0;j<l;++j)
            si>>tal2[j];
        si>>fel;
        if(fel==0)
        {
            for(j=0;j<l;++j)
            {
                gr[tal1[j]]=-1;
                gr[tal2[j]]=-1;
            }
        }
        else
        {
            if(fel==1)
            {
                for(j=0;j<l;++j)
                {
                    if(gr[tal1[j]]==1||gr[tal1[j]]==0)
                    {
                        gr[tal1[j]]=1;
                    }
                    else
                        gr[tal1[j]]=-1;
                }


                for(j=0;j<l;++j)
                {
                    if(gr[tal2[j]]==2||gr[tal2[j]]==0)
                    {
                        gr[tal2[j]]=2;
                    }
                    else
                        gr[tal2[j]]=-1;
                }

            }
            else
            {

                for(j=0;j<l;++j)
                {
                    if(gr[tal1[j]]==2||gr[tal1[j]]==0)
                    {
                        gr[tal1[j]]=2;
                    }
                    else
                        gr[tal1[j]]=-1;
                }


                for(j=0;j<l;++j)
                {
                    if(gr[tal2[j]]==1||gr[tal2[j]]==0)
                    {
                        gr[tal2[j]]=1;
                    }
                    else
                        gr[tal2[j]]=-1;
                }

            }
        }
    }
    int p1=0,p0=0,p2=0;
    for(i=1;i<=n;++i)
    {
        //so<<gr[i]<<' ';
        if(gr[i]==1)
            if(!p1)
            {
                p1=i;
            }
            else
                p1=-1;
        if(gr[i]==2)
            if(!p2)
            {
                p2=i;
            }
            else
                p2=-1;
        if(gr[i]==0)
            if(!p0)
            {
                p0=i;
            }
            else
                p0-=-1;

    }
    if(p1>0&&(p2<1&&p0==0))
        so<<p1;
    else if(p2>0&&(p1<1&&p0==0))
        so<<p2;
    else if(p0>0&&(p1==0&&p1==0))
        so<<p0;
    else so<<0;
    so<<'\n';
    so.close();
//    fclose(si);
    return 0;
}