Cod sursa(job #1827325)

Utilizator silkMarin Dragos silk Data 11 decembrie 2016 18:59:44
Problema Balanta Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.15 kb
#include <cstdio>
#define NMax 1024

char st[NMax+1][NMax+1];
char dr[NMax+1][NMax+1];
char pos[NMax+1];

int main(){
    freopen("balanta.in","r",stdin);
    freopen("balanta.out","w",stdout);

    int i,j,k,x,N,M,deja,ok,nr,res;

    scanf("%d %d",&N,&M);
    for(i = 1; i <= M; ++i)
    {
        scanf("%d",&k);
        for(j = 1; j <= k; ++j) { scanf("%d",&x); st[i][x] = 1; }
        for(j = 1; j <= k; ++j) { scanf("%d",&x); dr[i][x] = 1; }
        scanf("%d",&x);
        pos[i] = x;
    }

    for(nr = 0, i = 1; i <= N; ++i)
    {
        for(deja = 0, ok = 1, j = 1; j <= M; ++j)
        {
            if(st[j][i] && pos[j] != 1) ok = 0;
            if(dr[j][i] && pos[j] != 2) ok = 0;
            if(st[j][i]==dr[j][i] && pos[j]) ok = 0;
        }
        if(ok) ++nr, res = i, deja = 1;

        for(ok = 1, j = 1; j <= M; ++j)
        {
            if(st[j][i] && pos[j] != 2) ok = 0;
            if(dr[j][i] && pos[j] != 1) ok = 0;
            if(st[j][i]==dr[j][i] && pos[j]) ok = 0;
        }
        if(ok && !deja) ++nr, res = i;
    }

    if( nr != 1 ) printf("0\n");
    else printf("%d\n",res);



return 0;
}