В этой строке:
std::cin >> sz; //size changes again
Комментарий не совсем правильный. Переменная, представляющая размер , изменилась, но массив arr
не изменился. Таким образом, индексация в любую позицию, большую или равную старому размеру, вызовет неопределенное поведение. Это означает, что программа может работать иногда, а другие - нет.
Чтобы изменить размер массива arr
, после указанной выше строки необходимо сделать:
delete [] arr;
arr = new int[sz];