Nu aveti permisiuni pentru a descarca fisierul grader_test10.in
Cod sursa(job #24603)
Utilizator | Adrian 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;
}