Cod sursa(job #18357)

Utilizator webspiderDumitru Bogdan webspider Data 18 februarie 2007 11:45:20
Problema Amlei Scor 100
Compilator cpp Status done
Runda preONI 2007, Runda 2, Clasa a 10-a Marime 1.21 kb
#include <stdio.h>
#include <string.h>
#include <iostream>
#include <vector>

using namespace std;

vector<int> grp[2][501];
int exc[2][501];
int n,l[2];

int main()
{
	int i,j,exp,good,a;
	freopen("amlei.in","r",stdin);
	freopen("amlei.out","w",stdout);

	while ( !feof(stdin) )
	{
		scanf("%d %d %d\n", &n, &l[0], &l[1] );
		for ( exp = 0; exp <= 1; exp ++)
		for ( i = 1; i <= l[exp]; i++ )
		{
			grp[exp][i].clear();
			for ( j = 1; j <= n; j++ )
			{
				scanf("%d ", &a);
				grp[ exp ][i].push_back(a);
			}
			sort( grp[exp][i].begin(), grp[exp][i].end() );
		}

		for ( exp = 0; exp <= 1; exp ++ )
		{
			for ( i = 1; i <= l[exp]; i++ )
				if ( exc[exp][i] == 0 )
				for ( j = i+1; j <= l[exp]; j++ )
					if ( grp[exp][i] == grp[exp][j] )
					 exc[exp][j] = 1;
		}

		for ( i=1; i <= l[0]; i++ )
			if ( exc[0][i] == 0 )
			for ( j=1; j <= l[1]; j++ )
				if ( exc[1][j] == 0 )
					if ( grp[0][i] == grp[1][j] ) exc[0][i] = exc[1][j] = 1;
		
		good = 1;
		for ( exp = 0; exp <= 1; exp++ )
		{
			for ( i = 1; i <= l[exp]; i++ )
				if ( exc[exp][i] == 0 ) good = 0;
		}

		if ( good == 1 ) 
			printf("DA\n");
		else printf("NU\n");
		bzero(exc, sizeof( exc ) );
	}

	fclose(stdin);
	fclose(stdout);

	return 0;
}