Алгоритмы. mergeSort на с++
Решаю задачи из хендбука Яндекса по алгоритмам. Мое решение не проходит тест №4 (вводные данные неизвестны) - Wrong Answer. то есть нет проблемы с памятью, скоростью. Проблема в самом решении видимо... помогите, что нужно исправить или на что нужно обратить внимание?
мой код:
#include <iostream>
int* merge(int* arr1, size_t n1, int* arr2, size_t n2) {
int* res = new int[n1 + n2];
size_t i1 = 0, i2 = 0;
while (i1 != n1 && i2 != n2) {
if (arr1[i1] < arr2[i2]) {
res[i1 + i2] = arr1[i1];
++i1;
}
else {
res[i1 + i2] = arr2[i2];
++i2;
}
}
while (i1 != n1) {
res[i1 + i2] = arr1[i1];
++i1;
}
while (i2 != n2) {
res[i1 + i2] = arr2[i2];
++i2;
}
return res;
}
int main() {
int n;
std::cin >> n;
int* res = nullptr;
int* temp = nullptr;
size_t total_length = 0;
while (n-- != 0) {
size_t length;
std::cin >> length;
int* second = new int[length];
for (size_t i = 0; i < length; ++i) {
int x;
std::cin >> x;
second[i] = x;
}
temp = merge(res, total_length, second, length);
delete[] res;
delete[] second;
res = temp;
total_length += length;
}
for (size_t i = 0; i != total_length; ++i) {
std::cout << res[i] << ' ';
}
delete[] res;
}