Cod sursa(job #19788)

Utilizator sima_cotizoSima Cotizo sima_cotizo Data 19 februarie 2007 22:34:43
Problema Amlei Scor 10
Compilator c Status done
Runda Arhiva de probleme Marime 1.06 kb
#include <stdio.h>
#include <string.h>
#define FIN "amlei.in"
#define FOUT "amlei.out"
#define MAX 501
#define abs(c) (c<0)?(-c):c

long N, t, u;
long long E1[MAX], E2[MAX], ex1, ex2;
long f[4];

int main() {
	long i,j,c;
	freopen(FIN, "r", stdin);
	freopen(FOUT, "w", stdout);

	while ( !feof(stdin)) {
		memset(E1, 0, sizeof(long long) * (t+1));
		memset(E2, 0, sizeof(long long) * (u+1));
		memset(f, 0, sizeof(f));
		scanf("%ld %ld %ld\n", &N, &t, &u);
		if (N==0 || t==0 || u==0)
			break;

		for (i=0; i<t; ++i) {
			for (j=0; j<N; ++j) {
				scanf("%ld", &c);
				if ( c > 0 )
					E1[i] |= 1 << c;
			}
			if ( E1[i] == 0 ) f[0] = 1;
			if ( E1[i] == (1<<(N+1)) - 2 ) f[1] = 1;
		}
		scanf("\n");
		for (i=0; i<u; ++i) {
			for (j=0; j<N; ++j) {
				scanf("%ld", &c);
				if ( c > 0 )
					E2[i] |= 1 << c;
			}
		}
		scanf("\n");

		long buba=0;
		for (i=0; i<t; ++i) {
			long ok=0;
			for (j=0; j<u; ++j)
				if ( E1[i] == E2[j] )
					E2[j] = -1, ok=1;
			if (!ok)
				buba = 1;
		}
		printf("%s\n", (buba==0) ? "DA" : "NU");
	}

	fclose(stdout);
	fclose(stdin);
	return 0;
}