Cod sursa(job #94522)

Utilizator fireatmyselfBogdan-Alexandru Stoica fireatmyself Data 23 octombrie 2007 16:20:18
Problema Balanta Scor 30
Compilator c Status done
Runda Arhiva de probleme Marime 1.38 kb
#include <stdio.h>
#define NMAX (10+(1<<10))

int N, M, St[NMAX], T[NMAX];

int main()
{
        int i, k, k2, g, p, q, zero=0, mzero=0, lastp, lastq, lastm;
        
        freopen("balanta.in", "r", stdin);
        scanf("%d%d", &N, &M);

        for (i = 0; i < NMAX; i++) St[i] = -1;

        while (M--)
        {
                scanf("%d", &k); k2 = k<<1;
                for (i = 0; i < k2; i++) scanf("%d", T+i);
                scanf("%d", &g);
                if (g == 0) p = q = 0;
                if (g == 1) p = 1, q = 2;
                if (g == 2) p = 2, q = 1;
                for (i = 0; i < k; i++) St[T[i]] = p;
                for (i = k; i < k2; i++) St[T[i]] = q;
        }

        for (i = 1, p = q = 0; i <= N; i++)
            if (St[i]==1) p++, lastp = i;
            
            else
            
            if (St[i]==2) q++, lastq = i;
            
            else
            
            if (St[i]==0) zero++;
            
            else
            
            if (St[i]<0) { mzero++; lastm = i; }

        freopen("balanta.out", "w", stdout);

        if (p==1) printf("%d\n", lastp);
        
        else
        
        if (q==1) printf("%d\n", lastq);

        else

        if ((mzero==1)&&((mzero+zero)==N)) printf("%d\n", lastm);

        else
        
        printf("0\n");

        return 0;
        
}