Pagini recente » Cod sursa (job #617039) | Cod sursa (job #70945) | Cod sursa (job #998614) | Cod sursa (job #1158714) | Cod sursa (job #24940)
Cod sursa(job #24940)
#include <stdio.h>
#define MAX_N 1024
#define FIN "balanta.in"
#define FOUT "balanta.out"
int N, M, result[MAX_N];
char A[MAX_N][MAX_N], buf[262144], *p;
inline int get(void)
{
int n;
for (n = 0; *p >= '0' && *p <= '9'; p++)
n = n*10 + *p-'0';
for (; *p == ' '; p++);
return n;
}
int main(void)
{
int i, j, cnt, x;
freopen(FIN, "r", stdin);
freopen(FOUT, "w", stdout);
scanf("%d %d", &N, &M);
for (i = 0; i < M; i++)
{
fgets(buf, sizeof(buf), stdin); p = buf;
cnt = get();
for (j = 0; j < cnt; j++)
{
x = get()-1;
A[i][x] = 1;
}
for (j = 0; j < cnt; j++)
{
x = get()-1;
while (A[i][x]);
A[i][x] = 2;
}
result[j] = get();
}
for (cnt = i = 0; i < N; i++)
{
for (j = 0; j < M; j++)
{
if (!A[j][i] && result[j]) break;
if (A[j][i] == 1 && result[j] != 2) break;
if (A[j][i] == 2 && result[j] != 1) break;
}
if (j == M) cnt++, x = i;
for (j = 0; j < M; j++)
{
if (!A[j][i] && result[j]) break;
if (A[j][i] == 1 && result[j] != 1) break;
if (A[j][i] == 2 && result[j] != 2) break;
}
if (j == M) cnt++, x = i;
}
printf("%d\n", cnt != 1 ? 0 : x+1);
return 0;
}