Cod sursa(job #2546352)

Utilizator DanutAldeaDanut Aldea DanutAldea Data 14 februarie 2020 09:17:14
Problema Balanta Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 2.01 kb
#include <fstream>
#include <bitset>
using namespace std;

ifstream fin("balanta.in");
ofstream fout("balanta.out");

int n,m,i,j,k,r,f[1025],cnt,sol;
bitset <1025> x,y;

int main(){
    fin>>n>>m;
    for(;m;m--){
        fin>>k;
        x.reset();
        y.reset();

        for(i=1;i<=k;i++)
            fin>>j,x[j]=1;
        for(i=1;i<=k;i++)
            fin>>j,y[j]=1;

        fin>>r;

        if(r==0){
            for(i=1;i<=n;i++)
                if(x[i] || y[i])
                    f[i]=-1;
        }

        if(r==1){
            for(i=1;i<=n;i++){
                if(x[i]==0 && y[i]==0)
                    f[i]=-1;
                else
                    if(x[i])
                        if(f[i]==2 || f[i]==-1)
                            f[i]=-1;
                        else
                            f[i]=1;
                    else
                        if(f[i]==1 || f[i]==-1)
                            f[i]=-1;
                        else
                            f[i]=2;
            }
        }

        if(r==2){
            for(i=1;i<=n;i++){
                if(x[i]==0 && y[i]==0)
                    f[i]=-1;
                else
                    if(x[i])
                        if(f[i]==1 || f[i]==-1)
                            f[i]=-1;
                        else
                            f[i]=2;
                    else
                        if(f[i]==2 || f[i]==-1)
                            f[i]=-1;
                        else
                            f[i]=1;
            }
        }
    }


    for(i=1;i<=n;i++){
        if(f[i]!=-1 && f[i]!=0){
            if(sol==0)
                sol=i;
            else{
                fout<<0<<"\n";
                return 0;
            }
        }

        if(f[i]==0)
            if(cnt==0)
                cnt=i;
            else
                cnt=-1;
    }

    if(sol==0 && cnt!=-1)
        fout<<cnt;
    else
        fout<<sol;

    return 0;
}