Pagini recente » Cod sursa (job #2621468) | Cod sursa (job #1650031) | Cod sursa (job #382318) | Cod sursa (job #1617208) | Cod sursa (job #20188)
Cod sursa(job #20188)
const maxn = 30000;
var fi,fo:text;
n,x,y,i,j,l:longint;
ok,okk:boolean;
a,b:array[1..maxn]of longint;
procedure sorta(l,r:longint);
var i,j,x,y:longint;
begin
i:=l;
j:=r;
x:=a[(l+r) div 2];
repeat
while a[i]<x do i:=i+1;
while x<a[j] do j:=j-1;
if i<=j then
begin
y:=a[i];
a[i]:=a[j];
a[j]:=y;
i:=i+1;
j:=j-1;
end;
until i>j;
if l<j then sorta(l,j);
if i<r then sorta(i,r);
end;
procedure sortb(l,r:longint);
var i,j,x,y:longint;
begin
i:=l;
j:=r;
x:=b[(l+r) div 2];
repeat
while b[i]<x do i:=i+1;
while x<b[j] do j:=j-1;
if i<=j then
begin
y:=b[i];
b[i]:=b[j];
b[j]:=y;
i:=i+1;
j:=j-1;
end;
until i>j;
if l<j then sortb(l,j);
if i<r then sortb(i,r);
end;
procedure comp(p,q:longint);
var k:longint;
begin
k:=1;
l:=1;
ok:=false;
if a[k+(p-1)*n]<>b[l+(q-1)*n] then exit;
while (k<n) do
begin
while a[k+(p-1)*n]=a[k+(p-1)*n+1] do inc(k);
inc(k);
while b[l+(q-1)*n]=b[l+(q-1)*n+1] do inc(l);
inc(l);
if a[k+(p-1)*n]<>b[l+(q-1)*n] then exit;
end;
ok:=true;
end;
procedure solve;
begin
i:=1;
j:=1;
okk:=false;
for i:=1 to x do
begin
for j:=1 to y do
begin
comp(i,j);
if ok then break;
end;
if ok=false then
begin
exit;
end;
end;
okk:=true;
end;
procedure readdata;
begin
assign(fi,'amlei.in');
assign(fo,'amlei.out');
reset(fi);
rewrite(fo);
while not eof(fi) do
begin
readln(fi,n,x,y);
l:=0;
for i:=1 to x do
begin
for j:=1 to n do
begin
inc(l);
read(fi,a[l]);
end;
sorta(1+(i-1)*n,i*n);
end;
l:=0;
for i:=1 to y do
begin
for j:=1 to n do
begin
inc(l);
read(fi,b[l]);
end;
sortb(1+(i-1)*n,i*n);
end;
solve;
if okk then writeln(fo,'DA')
else writeln(fo,'NU');
end;
close(fo);
close(fi);
end;
begin
readdata;
end.