Cod sursa(job #1077973)

Utilizator TarabanDragosTaraban Dragos-Petru TarabanDragos Data 11 ianuarie 2014 21:21:31
Problema Balanta Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.69 kb
#include<cstdio>
#include<cstring>
int n,m,u[1500],gr[1500],st[1500],dr[1500],stok[1500],drok[1500],i,j,nu,ng,w,k,ok,n1,n2;
FILE *f,*g;
int main(){
    f=fopen("balanta.in","r");
    g=fopen("balanta.out","w");
    fscanf(f,"%d%d",&n,&m);
    for(i=1;i<=n;i++){
        u[i]=1;
        gr[i]=1;
    }
    for(i=1;i<=m;i++){
        fscanf(f,"%d",&k);
        memset(stok,0,sizeof(stok));
        memset(drok,0,sizeof(drok));
        for(j=1;j<=k;j++){
            fscanf(f,"%d",&st[j]);
            stok[st[j]]=1;
        }
        for(j=1;j<=k;j++){
            fscanf(f,"%d",&dr[j]);
            drok[dr[j]]=1;
        }
        fscanf(f,"%d",&w);
        if(w==0){
            for(j=1;j<=k;j++){
                u[st[j]]=0;
                gr[st[j]]=0;
                u[dr[j]]=0;
                gr[dr[j]]=0;
            }
        }
        else if(w==1){
            for(j=1;j<=n;j++){
                if(stok[j]==0)
                    gr[j]=0;
                if(drok[j]==0)
                    u[j]=0;
            }
        }
        else{
            for(j=1;j<=n;j++){
                if(stok[j]==0)
                    u[j]=0;
                if(drok[j]==0)
                    gr[j]=0;
            }
        }
    }
    for(i=1;i<=n;i++){
        if(u[i]==1)
            if(n1==0)
                n1=i;
            else
                n1=0;
        if(gr[i]==1)
            if(n2==0)
                n2=i;
            else
                n2=0;
    }
    if(n1==0&&n2==0)
        fprintf(g,"0");
    else if(n1!=0&&n2==0)
            fprintf(g,"%d",n1);
    else
            fprintf(g,"%d",n2);
    fclose(f);
    fclose(g);
    return 0;
}