Cod sursa(job #19941)

Utilizator tudalexTudorica Constantin Alexandru tudalex Data 20 februarie 2007 12:17:40
Problema Amlei Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.97 kb
#include <stdio.h>

FILE *f,*g;

long long a[2][501];
int v[2][501];
int n,t,u,i,j,q,temp;

// (1&!2&3) (!1&2&!3) -1 +2 
void runtest()
{
	int i,j;
	for (i=1;i<=t;++i)
	{
		for (j=1;j<=u;++j) if(a[0][i]==a[1][j])
		{ 
			v[0][i]=1;
			v[1][j]=1;
		}
	}
}
int check()
{
	int i;
	for (i=1;i<=t;++i) 
	{
		if (v[0][i]!=1) return 0;
		v[0][i]=0;
	}
	for (i=1;i<=u;++i) 
	{
		if (v[1][i]!=1) return 0;
		v[1][i]=0;
	}
	return 1;
}
int main()
{
	f=fopen("amlei.in","r");
	freopen("amlei.out","w",stdout);
	//fprintf(stderr,"CUCUBAU\n");
	while (fscanf(f,"%d %d %d\n",&n,&t,&u) == 3)
	{
		//printf("Testul %d\n",++q);
		for (i=1;i<=t;++i) 
		{
			a[0][i]=0;
			for (j=1;j<=n;++j) 
			{
				fscanf(f,"%d",&temp);
				if (t>0) a[0][i]|=1<<temp;
			}
		}
		fscanf(f,"\n");
		for (i=1;i<=u;++i) 
		{
			a[1][i]=0;
			for (j=1;j<=n;++j)
			{
				fscanf(f,"%d",&temp);
				if (t>0) a[1][i]|=1<<temp;
			}
		}
		fscanf(f,"\n");
		runtest();
		if (check()==1) printf("DA\n"); else printf("NU\n");
	}
	return 0;
}