int arr[n]; 이 부분이 문제일 것입니다.
위의 방식으로는 C++은 배열 할당을 할 때 const가 아닌 변수를 이용해서 배열을 만드는 것이 불가능합니다. 그러니까 n에 10이 들어가있다고 arr[10]; 이런식으로 10칸짜리 배열이 만들어지는게 안되는거죠...
입력을 모두 받아서 정답을 배열에 저장했다가 입력이 끝난 후 한꺼번에 출력하는 방식은 왠만해서는 지양했으면 좋겠습니다. 한줄이 입력되는 순간 그 줄에 대한 정답이 바로 구해지니까 그 자리에서 출력하는게 훨씬 개이득이죠