Pagini recente » Cod sursa (job #354361) | Cod sursa (job #1980578) | Cod sursa (job #778191) | Cod sursa (job #2291810) | Cod sursa (job #475373)
Cod sursa(job #475373)
#include <algorithm>
using namespace std;
#define DIM 505
#define MAX 55
struct vector {int a[MAX];} v[DIM],w[DIM];
int n,t,u;
void read ()
{
int i,j;
for (i=1; i<=t; ++i)
for (j=1; j<=n; ++j)
scanf ("%d",&v[i].a[j]);
for (i=1; i<=u; ++i)
for (j=1; j<=n; ++j)
scanf ("%d",&w[i].a[j]);
}
struct cmp
{
bool operator () (const vector &x,const vector &y) const
{
int i;
for (i=1; i<=n; ++i)
if (x.a[i]!=y.a[i])
return x.a[i]<y.a[i];
return 0;
}
};
inline int lafel (const vector &x,const vector &y)
{
int i;
for (i=1; i<=n; ++i)
if (x.a[i]!=y.a[i])
return 0;
return 1;
}
int solve ()
{
int i,j;
for (i=1; i<=t; ++i)
sort (v[i].a+1,v[i].a+n+1);
sort (v+1,v+t+1,cmp ());
for (i=1; i<=u; ++i)
sort (w[i].a+1,w[i].a+n+1);
sort (w+1,w+u+1,cmp ());
for (i=j=1; i<=t && j<=u; ++i, ++j)
{
for ( ; i<t && lafel (v[i],v[i+1]); ++i);
for ( ; j<u && lafel (w[j],w[j+1]); ++j);
if (!lafel (v[i],w[j]))
return 0;
}
return 1;
}
int main ()
{
freopen ("amlei.in","r",stdin);
freopen ("amlei.out","w",stdout);
for ( ; scanf ("%d%d%d",&n,&t,&u)==3; )
{
read ();
if (solve ())
printf ("DA\n");
else
printf ("NU\n");
}
return 0;
}