Cod sursa(job #70985)

Utilizator a7893Nae Mihai a7893 Data 8 iulie 2007 20:26:34
Problema Amlei Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 2.4 kb
#include<stdio.h>//nush ce nu merge! (a si mai tre si optimizata!)
#include<string.h>
#include<stdlib.h>
#define N 26000
int n,t,u,v1[N],v2[N],a1[550][550],a2[550][550],k1,k2,l1,l2,a3[550][550],a4[550][550],k3,k4;
void afis()
{
	int i,j;
	for(i=0;i<k3;i++)
	{
		for(j=0;j<l1;j++)
			printf("%d ",a3[i][j]);
		printf("\n");
	}
	printf("\n");
	for(i=0;i<k4;i++)
	{
		for(j=0;j<l2;j++)
			printf("%d ",a4[i][j]);
		printf("\n");
	}
}
int same(int b1[550],int b2[550],int k)
{
	int i,ok=1;
	for(i=0;i<k;i++)
		if(b1[i]!=b2[i])
			ok=0;
	return ok;
}
int maxim(const void *a,const void *b)
{
	return *(int*)a-*(int*)b;
}
void init()
{
	int i,j;
	for(i=0;i<550;i++)
		for(j=0;j<550;j++)
			a1[i][j]=a2[i][j]=a3[i][j]=a4[i][j]=0;
	for(i=0;i<N;i++)
		v1[i]=v2[i]=0;
}
void sort2(int a[550][550])
{
	int i,ok,aux[550];
	do
	{
		ok=0;
		for(i=0;i<k1-1;i++)
			if(a[i][0]>a[i+1][0])
			{
				memcpy(aux,a[i],sizeof(a[i]));
				memcpy(a[i],a[i+1],sizeof(a[i+1]));
				memcpy(a[i+1],aux,sizeof(aux));
				ok=1;
			}
	}while(ok);
}
int correct()
{
	int i;
	sort2(a3);
	sort2(a4);
	for(i=0;i<k3;i++)
		if(!same(a3[i],a4[i],k3))
			return 0;
	return 1;
}
void read_solve()
{
	int i,j;
	while(scanf("%d",&n)!=EOF)
	{
		k1=l1=k2=l2=k3=k4=0;
		init();
		scanf("%d%d",&t,&u);
		for(i=0;i<n*t;i++)
			scanf("%d",&v1[i]);
		for(i=0;i<n*u;i++)
			scanf("%d",&v2[i]);
		a1[k1][l1++]=v1[0];
		for(i=1;i<n*t;i++)
			if(i%n==0)
			{
				l1=0;
				k1++;
				a1[k1][l1++]=v1[i];
			}
			else
				a1[k1][l1++]=v1[i];
		a2[k2][l2++]=v2[0];
		for(i=1;i<n*u;i++)
			if(i%n==0)
			{
				l2=0;
				k2++;
				a2[k2][l2++]=v2[i];
			}
			else
				a2[k2][l2++]=v2[i];
		k1=t;
		k2=u;
		l1=l2=n;
		for(i=0;i<k1;i++)
			qsort(a1[i],l1,sizeof(a1[i][j]),maxim);
		for(i=0;i<k2;i++)
			qsort(a2[i],l2,sizeof(a2[i][j]),maxim);
		for(i=0;i<k1-1;i++)
			for(j=i+1;j<k1;j++)
				if(same(a1[i],a1[j],l1))
					a1[j][0]=-N;
		for(i=0;i<k1;i++)
			if(a1[i][0]!=-N)
				memcpy(a3[k3++],a1[i],sizeof(a1[i]));
		for(i=0;i<k2-1;i++)
			for(j=i+1;j<k2;j++)
				if(same(a2[i],a2[j],l2))
					a2[j][0]=-N;
		for(i=0;i<k2;i++)
			if(a2[i][0]!=-N)
				memcpy(a4[k4++],a2[i],sizeof(a2[i]));
		if(k3==k4&&l1==l2&&correct())
			printf("DA\n");
		else
			printf("NU\n");
	}
}
int main()
{
	freopen("amlei.in","r",stdin);
	freopen("amlei.out","w",stdout);
	read_solve();
	return 0;
}