Вы путаетесь с началом и концом массивов.
В паскале принято нумеровать элементы массивов с 1. SetLength создаёт массив, который нумеруется с 0.
У вас есть цикл где вы читаете с 0 — проверьте всегда ли правильно вы указываете нижнюю границу массива.
Для универсальности нужно применять функции High и Low, которые указывают нижний и верхний элементы массива:
For i := Low(Arr) to High(Arr) do
Begin
write(Arr[i]:4);
End;
Дальше конечно много ещё замечаний к стилю и к коду.
Например, в задании сказано, что n<=300, а вы проверяете n<300. Есть места, где вы лишний раз инициализируете переменные.
В целом, задание не просто на программирование, а на алгоритмы.
Ваш способ работающий, но сильно не оптимальный. Например, для решения задачи достаточно просто приписать массив B в конец массива A, а затем всё отсортировать.
Задание в такой постановке как-бы намекает на изучение алгоритма сортировки слиянием.