Cod sursa(job #1675409)

Utilizator MihneaGhiraMihnea MihneaGhira Data 5 aprilie 2016 12:12:32
Problema Balanta Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.38 kb
#include<fstream>
#include<cstring>
using namespace std;
ifstream fin("balanta.in");
ofstream fout("balanta.out");
int N,M,r,t,k,i,j,nr1,nr2;
int F1[1025],F2[1025],v[2050],F[1025];
int main(){
    fin>>N>>M;
    for(i=1;i<=N;i++)
        F1[i]=F2[i]=1;
    for(i=1;i<=M;i++){
        fin>>k;
        memset(F,0,sizeof(F));
        for(j=1;j<=2*k;j++){
            fin>>v[j];
            F[v[j]]=1;
        }
        fin>>t;
        if(t==0){
            for(j=1;j<=2*k;j++)
                F1[v[j]]=F2[v[j]]=0;
        }
        if(t==1){
            for(j=1;j<=k;j++){
                F1[v[j]]=0;
            }
            for(j=k+1;j<=k*2;j++)
                F2[v[j]]=0;
            for(j=1;j<=N;j++)
                if(F[j]!=1){
                    F1[j]=F2[j]=0;
                }
        }
        if(t==2){
            for(j=k+1;j<=k*2;j++)
                F1[v[j]]=0;
            for(j=1;j<=k;j++)
                F2[v[j]]=0;
            for(j=1;j<=N;j++)
                if(F[j]!=1){
                    F1[j]=F2[j]=0;
                }
        }
    }
    for(i=1;i<=N;i++){
        if(F1[i]==1)
            nr1++;
        if(F2[i]==1)
            nr2++;
    }
    if(nr1+nr2!=1)
        fout<<0;
    else{
       for(i=1;i<=N;i++)
        if(F1[i]==1 || F2[i]==1){
            fout<<i;
            return 0;
        }
    }
    return 0;
}