Pagini recente » Cod sursa (job #2659728) | Cod sursa (job #1658973) | Cod sursa (job #1028996) | Cod sursa (job #2371712) | Cod sursa (job #25052)
Cod sursa(job #25052)
#include <cstdio>
#include <cstring>
#define FIN "balanta.in"
#define FOUT "balanta.out"
#define MAXN 1025
int V[2][MAXN], // apartin monedele printre care daca e cea naspa, atunci e mai grea/usoara;
no[2]={0,0}, n, m;
void put(int where, int who)
{
int i;
for (i=0; where; where >>= 1, ++i)
if (where & 1) {
if (!V[i][who]) ++no[i];
V[i][who] = 1;
}
}
void rem(int where, int who)
{
int i;
for (i=0; where; where >>= 1, ++i)
if (where & 1) {
if (V[i][who]) --no[i];
V[i][who] = 0;
}
}
void rezolvare()
{
int i, j, nr, r, A[2][MAXN];
freopen(FIN, "r", stdin);
freopen(FOUT,"w",stdout);
scanf("%d %d", &n, &m);
for (i=0; i<m; ++i)
{
scanf("%d", &nr);
for (j=0; j<nr; ++j) scanf("%d", &A[0][j]);
for (j=0; j<nr; ++j) scanf("%d", &A[1][j]);
scanf("%d", &r);
if (r == 0)
for (j=0; j<nr*2; ++j) rem(3, A[0][j]); // 1-G, 10-U
else {
for (j=0; j<nr; ++j) { put(1<<(r-1), A[0][j]); rem(1<<(r&1), A[0][j]); }
for (j=0; j<nr; ++j) { put(1<<(r&1), A[1][j]); rem(1<<(r-1), A[1][j]); }
}
//for (j=1; j<=n; ++j) if (V[0][j]) fprintf(stderr, "%d ", j); fprintf(stderr,"\n");
//for (j=1; j<=n; ++j) if (V[1][j]) fprintf(stderr, "%d ", j); fprintf(stderr,"\n");
}
if (no[0] != no[1])
{
if (no[0] == 1)
for (i=1; i<=n; ++i) if (V[0][i]) { printf("%d\n", i); return; } // si e mai grea
if (no[1] == 1)
for (i=1; i<=n; ++i) if (V[1][i]) { printf("%d\n", i); return; } // si e mai usoara
}
printf("0\n");
}
int main()
{
rezolvare();
return 0;
}