Дык попробуйте скомпилировать свою программу и увидите следующую ошибку:
main.cpp: In function ‘int main()’:
main.cpp:19:35: error: ‘a’ was not declared in this scope
19 | arr[i] = new int [a];
| ^
Здесь сказано, что переменная `a` не определена. Её и правда нигде в коде нет.
Память, выделенная для подмассивов внутри arr, не освобождается = утечка памяти. Вы же выполняете сначала один new, а потом в цикле выполняете ещё new для каждого подмассива. Освобождать память с помощью delete надо по такой же логике - сначала для подмассивов, а потом только для самого arr -
delete[] arr
.