Cod sursa(job #19400)

Utilizator ProstuStefan-Alexandru Filip Prostu Data 19 februarie 2007 14:21:10
Problema Amlei Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.09 kb
#include <cstdio>
#include <algorithm>

using namespace std;

const int MMAX = 512;
const int NMAX = 64;

int N, T, U;
int A[MMAX][NMAX], B[MMAX][NMAX];

bool equal(int A[], int B[]) {
	int i;

	for (i = 0; i < N; ++i)
		if (A[i] != B[i])
			return false;
	
	return true;
}

bool good() {
	bool V[MMAX], me;
	int i, j;

	memset(V, 0x00, sizeof(V));

	for (i = 0; i < T; ++i) {

		me = false;

		for (j = 0; j < U; ++j)
			if (equal(A[i], B[j])) {
				V[j] = true;
				me = true;
			}

		if (!me) return false;
	}

	for (i = 0; i < U; ++i)
		if (V[i] == false)
			return false;

	return true;
}

int main() {
	FILE *fin = fopen("amlei.in", "rt");
	FILE *fout = fopen("amlei.out", "wt");
	int i, j;

	while ( fscanf(fin, " %d %d %d", &N, &T, &U) == 3) {
		
		for (i = 0; i < T; ++i) {
			for (j = 0; j < N; ++j)
				fscanf(fin, " %d", &A[i][j]);
			sort(A[i], A[i] + N);
		}

		for (i = 0; i < U; ++i) {
			for (j = 0; j < N; ++j)
				fscanf(fin, " %d", &B[i][j]);
			sort(B[i], B[i] + N);
		}

		if (good())
			fprintf(fout, "DA\n");
		else
			fprintf(fout, "NU\n");
	}

	fclose(fin);
	fclose(fout);
	return 0;
}