Алгоритмы. 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;
}

Ответы (0 шт):