Для небольших значений k вполне подойдет очередь.
var i,n,k,lf,rt,bg,nd: integer;
a: array[1..50000] of integer;
begin
write('N = '); readln(n);
write('K = '); readln(k);
for i:=1 to 50000 do a[i]:=0;
bg:=1; nd:=1;
a[bg]:=n;
repeat
n:=a[bg];
if n mod 2 = 0 then lf:=(n div 2)-1
else lf:=n div 2;
if n mod 2 = 0 then rt:=lf+1
else rt:=lf;
inc(nd);
a[nd]:=rt; inc(nd);
a[nd]:=lf;
inc(bg);
dec(k);
if nd>49500 then
begin
writeln('слишком большое k');
exit;
end;
until k=0;
writeln(lf,' ',rt);
end.
N = 12456987
K = 23198
379 379
N = 20
K = 4
2 2
N = 20
K = 5
1 2