Cod sursa(job #19565)

Utilizator mockeBarca Cristian Mihai mocke Data 19 februarie 2007 19:19:01
Problema Amlei Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.81 kb
//100p

#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);
}

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();
	
	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);
	
	while (scanf("%d %d %d", &N, &T, &U)>1)
	{		
		citeste(A, T, K1);
		citeste(B, U, K2);
		
		elim(AA, A, T, K1);
		elim(BB, B, U, K2);
		
		if (K1 != K2) { printf("NU\n"); continue; }
		
		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;
}