DP
cin >> arr[j];
второй тут
while (!(cin >> arr[j])) {
поэтому читается в 2 раза больше чем надо, но вообще код написан так что есть ощущение полного отсутствия понимания что в нём происходит
Size: a a a
DP
cin >> arr[j];
while (!(cin >> arr[j])) {
D
DP
DP
DP
D
DP
DP
DP
DP
DP
O
DP
DP
O
DP
D
DP
DP
DP
while (!(cin >> arr[j]))