Cod sursa(job #19535)

Utilizator love_for_uSpancioc Riana love_for_u Data 19 februarie 2007 18:44:18
Problema Amlei Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 2.36 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, OK1, OK2;

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) { ++K; cnt = 0; }

			V[K].PB(elem), cnt++;
	}
		
	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;
	
	sort(A.begin(), A.end());
	sort(B.begin(), B.end());
	
	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();
	
	K = 1;
		
	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);
		
		citeste(A, T, K1);
		citeste(B, U, K2);
		
		elim(AA, A, T, K1);
		elim(BB, B, U, K2);
		
		//printf("\nTestul %d\n", W+1);  
		
		//afiseaza(A, T);
		//afiseaza(AA, K1);
		
		//afiseaza(B, U);	
		//afiseaza(BB, K2);
		
		for (i = 1; i <= K1; i++)
		{	
			OK1 = 0;
			
			for (j = 1; j <= K2; j++)
				if (compara(AA[i], BB[j]) == 0) OK1 = 1;

			if (OK1 == 0) break;
		}
				
		for (i = 1; i <= K2; i++)
		{
			OK2 = 0;
			
			for (j = 1; j <= K1; j++)
				if (compara(BB[i], AA[j]) == 0) OK2 = 1;

			if (OK2 == 0) break;
		}
		
		if (OK1 && OK2) printf("DA\n");
		else printf("NU\n");
		
		reseteaza(A, B, T, U);
		reseteaza(AA, BB, K1, K2);
	}
				
	return 0;
}