Cod sursa(job #19489)

Utilizator love_for_uSpancioc Riana love_for_u Data 19 februarie 2007 17:56:32
Problema Amlei Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 2.18 kb
#include <stdio.h>
#include <algorithm>
#include <vector>
#define PB push_back
#define NMAX 550

using namespace std;

vector < int > A[NMAX], B[NMAX];
vector < int > AA[NMAX], BB[NMAX];

int i, j, N, T, U, W, K1, K2, OK;

void citeste(vector < int > V[], int X, int &K)
{
	int i, elem = 0, cnt = 0;

	K = 1;
	
	for (i = 1; i <= N * X; i++)
		{
			scanf("%d", &elem);
			
			if (cnt == N) { sort(V[K].begin(), V[K].end()); ++K; cnt = 0; }

			V[K].PB(elem);
			cnt++;
		}
		
	sort(V[K].begin(), V[K].end());
	sort(V + 1, V + K + 1);
}

void afiseaza(vector <int> V[], int L)
{
	int i, j, sz;
	
	for (i = 1; i <= L; i++)
	{
			sz = V[i].size();
			
			for (j = 0; j < sz; j++) printf("%d ", V[i][j]);

			printf("\n");
	}
	
	printf("\n");
}

int compara(vector < int > A, vector < int > B)
{
	int i, sz;
	
	sz = A.size();
	
	for (i = 0; i < sz; i++)
	{
		if (A[i] > B[i]) return 1;
		if (A[i] < B[i]) return 2;
	}
	
	return 0;
}

void reseteaza(vector < int > V1[], vector < int > V2[], int X1, int X2)
{
	int i;
	
	for (i = 0; i <= X1; i++) V1[i].clear();
	for (i = 0; i <= X2; i++) V2[i].clear();
}

void elim(vector < int > VV[], vector < int > V[], int X, int &K)
{
	int i, j, sz;
	
	sz = V[1].size();
		
	for (i = 0; i < sz; i++) VV[K].PB(V[1][i]);
	
	for (i = 2; i <= X; i++) 
	{
			if (compara(VV[K], V[i]) != 0)
			{
				K++;
				
				sz = V[i].size(); 
				
				for (j = 0; j < sz; j++) VV[K].PB(V[i][j]);
			}
	}
}


int main()
{
	freopen("amlei.in", "r", stdin);
	freopen("amlei.out", "w", stdout);
	
	scanf("%d", &W);
	
	while (W--)
	{
		
		scanf("%d %d %d", &N, &T, &U);
		
		K1 = K2 = 0;
		
		citeste(A, T, K1);
		citeste(B, U, K2);
		
		K1 = K2 = 1;
		
		elim(AA, A, T, K1);
		elim(BB, B, U, K2);
		
		//afiseaza(A, T);
		//afiseaza(AA, K1);
		
		//afiseaza(B, U);	
		//afiseaza(BB, K2);
		
		if (K1 != K2) printf("NU\n");
		else
		{
			OK = 1;
			
			for (i = 1; i <= K1; i++) 
				if (compara(AA[i], BB[i]) != 0) { OK = 0; break; }
			
			if (OK) printf("DA\n");
			else    printf("NU\n");
		}
			
		reseteaza(A, B, T, U);
		reseteaza(AA, BB, K1, K2);
	}
				
	return 0;
}