Cod sursa(job #94527)

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

int N, M, H[NMAX], L[NMAX], T[NMAX];

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

        for (i = 1; i <= N; i++) H[i] = L[i] = 1;

        while (M--)
        {
                scanf("%d", &k);
                for (i = 0; i < N; i++) T[i] = 0;
                for (i = 0; i < k; i++) scanf("%d", &q), T[q] = 1;
                for (i = 0; i < k; i++) scanf("%d", &q), T[q] = 2;
                scanf("%d", &g);
                if (g==2) for (i = 1; i <= N; i++)
                          {
                              T[i]++;
                              if (T[i]==3) T[i] = 1;
                          }
                if (g == 0)
                {
                        for (i = 1; i <= N; i++)
                            if (T[i]) H[i] = L[i] = 0;
                        continue;
                }
                else
                {
                        for (i = 1; i <= N; i++)
                        {
                                p = H[i]; H[i] = 0;
                                if (p==1&&T[i]==1) H[i] = 1;
                                p = L[i]; L[i] = 0;
                                if (p==1&&T[i]==2) L[i] = 1;
                        }
                }
        }

        for (i = 1, p = q = 0; i <= N; i++)
        {
                if (H[i]) p++, lastp = i;
                if (L[i]) q++, lastq = i;
        }

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

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

        else

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

        else
        
        printf("0\n");
        
        return 0;
        
}