Cod sursa(job #1712248)

Utilizator andreicoman299Coman Andrei andreicoman299 Data 2 iunie 2016 15:01:57
Problema Balanta Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.52 kb
#include <stdio.h>
#include <stdlib.h>

int greu[1025], usor[1025], temp1[1025], temp2[1025];
int main(){
    int n, m;
    FILE*fi,*fo;
    fi=fopen("balanta.in","r");
    fo=fopen("balanta.out","w");
    fscanf(fi,"%d%d", &n, &m);

    for(int j=1;j<=1024;j++)
        greu[j]=usor[j]=1;

    for(int i=0;i<m;i++){
        int k;
        fscanf(fi,"%d", &k);
        for(int j=0;j<k;j++){
            int x;
            fscanf(fi,"%d", &x);
            temp1[x]=1;
        }
        for(int j=0;j<k;j++){
            int x;
            fscanf(fi,"%d", &x);
            temp2[x]=1;
        }
        int res;
        fscanf(fi,"%d", &res);
        if(res==1)
            for(int j=1;j<=1024;j++){
                greu[j]=greu[j]&temp1[j];
                usor[j]=usor[j]&temp2[j];
            }
        else if(res==2)
            for(int j=1;j<=1024;j++){
                greu[j]=greu[j]&temp2[j];
                usor[j]=usor[j]&temp1[j];
            }
        else
            for(int j=1;j<=1024;j++)
                if(temp1[j]==1 || temp2[j]==1)
                    greu[j]=usor[j]=0;
        for(int j=1;j<=1024;j++)
            temp1[j]=temp2[j]=0;
    }
    int rez, num=0;
    for(int j=1;j<=1024;j++){
        if(greu[j]==1){
            rez=j;
            num++;
        }
        if(usor[j]==1){
            rez=j;
            num++;
        }
    }
    if(num==1)
        fprintf(fo,"%d", rez);
    else
        fprintf(fo,"0");
    fclose(fi);
    fclose(fo);
    return 0;
}