Cod sursa(job #1077956)

Utilizator TarabanDragosTaraban Dragos-Petru TarabanDragos Data 11 ianuarie 2014 20:54:44
Problema Balanta Scor 30
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.62 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,1,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]==1)
                    gr[j]=0;
                if(drok[j]==1)
                    u[j]=0;
            }
        }
        else{
            for(j=1;j<=n;j++){
                if(stok[j]==1)
                    u[j]=0;
                if(drok[j]==1)
                    gr[j]=0;
            }
        }
    }
    for(i=1;i<=n;i++){
        if(u[i]==1){
            nu++;
            n1=i;
        }
        if(gr[i]==1){
            ng++;
            n2=i;
        }
    }
    if(nu!=1&&ng!=1)
        fprintf(g,"0");
    else
        if(nu==1)
            fprintf(g,"%d",n1);
        else
            fprintf(g,"%d",n2);
    fclose(f);
    fclose(g);
    return 0;
}