Nu aveti permisiuni pentru a descarca fisierul grader_test10.in

Cod sursa(job #24603)

Utilizator azotlichidAdrian Vladu azotlichid Data 2 martie 2007 23:43:59
Problema Balanta Scor 50
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.58 kb
#include <cstdio>
#include <cstdlib>
#include <cstring>

#define FOR(i, a, b) for (i = (a); i <= (b); i ++)
#define REP(i, n)    for (i =   0; i <  (n); i ++)

#define NMAX 1024

int N, M, i, k, stp, nr, R;
int s[NMAX], b[NMAX], x[NMAX], y[NMAX], a[NMAX];

int main(void)
{
    freopen("balanta.in", "r", stdin);
    freopen("balanta.out", "w", stdout);
    
    scanf("%d %d", &N, &M);
    FOR(i, 1, N) s[i] = b[i] = 1;
    REP(stp, M)
    {
        scanf("%d", &k);
        memset(x, 0, (N+1)*sizeof(int)), memset(y, 0, (N+1)*sizeof(int));
        REP(i, k) scanf("%d", &nr), x[nr] = 1;
        REP(i, k) scanf("%d", &nr), y[nr] = 1;
        
        scanf("%d", &R);
        switch (R)
        {
            case 0: //egal
                FOR(i, 1, N) if (x[i] || y[i]) s[i] = b[i] = 0;
                break;
                
            case 1: //stanga > dreapta
                FOR(i, 1, N)
                {
                    if (x[i]) s[i] = 0;
                    else if (y[i]) b[i] = 0;
                    else s[i] = b[i] = 0;
                }
                break;
                
            case 2: //stanga < dreapta
                FOR(i, 1, N)
                {
                    if (x[i]) b[i] = 0;
                    else if (y[i]) s[i] = 0;
                    else s[i] = b[i] = 0;
                }
                break;
        }

    }

    int nr = 0;
    FOR(i, 1, N) nr += s[i] + b[i];

    if (nr != 1) printf("0\n");
    else
    {
        FOR(i, 1, N) if (s[i] || b[i]) printf("%d\n", i);
    }
    
    return 0;
}