Cod sursa(job #71410)

Utilizator c_sebiSebastian Crisan c_sebi Data 10 iulie 2007 14:23:18
Problema Amlei Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 1 kb
#include <stdio.h>

#define GETBIT(n) (var >> n) & 1

int n, t, u, e1[25001], e2[25001];
long long var;

FILE *f = fopen("amlei.in", "r");
FILE *g = fopen("amlei.out", "w");

void read(int a[], int n) {
	int i;
	for (i=0; i<n; ++i){
		fscanf(f, "%d", &a[i]);
		if (a[i] > 0) a[i]--;
		else a[i]++;
	}
}

int eval (int e[], int nr) {
	int val_conj, rez, i, j;

	for (rez = 0, j = 0; j < nr && !rez; j+=n) {

		for (val_conj=1, i = 0; i < n && val_conj; ++i)

			if (e[j + i] > 0)
				if (!GETBIT(e[i + j])) val_conj=0;
				else ;
			else if (!(1 - GETBIT(-e[i + j]))) val_conj=0;

		if (val_conj) rez = 1;
	}
	return rez;
}


int main() {
	int echivalent;
	while (fscanf(f, "%d %d %d", &n, &t, &u)==3) {

		read(e1, n*t); read(e2, n*u);

		for (echivalent=1, var=0; var < (1<<n) && echivalent; ++var)
			if (eval(e1, n*t) != eval(e2, n*u))
				echivalent = 0;

		if (echivalent) fprintf(g, "DA\n");
		else fprintf(g, "NU\n");
	}
	fclose(f);
	fclose(g);
	return 0;
}