문제
오늘은 꿀꿀이들의 장날이다. 장날에는 꿀꿀이들이 제일 좋아하는 ‘달고나’를 사고판다. 꿀꿀이들은 자급자족을 하며 공동체 생활을 하고 있어서 ‘달고나’를 사고 팔 때, 비용이 들지 않는다. 다시 말해 ‘달고나’가 남는 꿀꿀이는 필요로 하는 꿀꿀이에게 무료로 준다는 말이다. 또한 신기하게도 팔고자 하는 ‘달고나’ 개수의 합과 사고자 하는 ‘달고나’ 개수의 합이 항상 같다고 한다.
장마당은 ‘달고나’를 사려고 하는 꿀꿀이와 팔고자 하는 꿀꿀이 들이 일렬로 줄을 선 상태이며 거래는 서로 이웃한 꿀꿀이에게만 1개씩 주거나 받는다. 장날에는 매우 많은 꿀꿀이들이 모인다. 따라서 이와 같은 거래회수가 가능한 적게 걸리도록 하고 싶다.
장날에 모인 꿀꿀이 수 N과 N마리의 꿀꿀이가 팔거나 사려고 하는 ‘달고나’ 개수 Di 를 입력받아 최소 거래회수를 출력하는 프로그램을 작성하시오.
입력
첫 행에 장날에 나온 꿀꿀이의 수 N(2 ≤ N ≤ 100,000) 이 주어진다. 다음 행에 i번째 꿀꿀이의 ‘달고나’ 수 Di( -1000 ≤ Di ≤ 1000)가 주어진다. Di 가 음수라면 사고자 하는 것이고, Di가 양수라면 팔고자 하는 것이다.
출력
모든 거래를 끝내는 데 필요한 최소 거래횟수를 하나의 정수로 출력한다. 결과 값은 int범위를 초과할 수 있다.
예제 #1
5
5 -4 1 -3 1
9
예제 #2
6
-1000 -1000 -1000 1000 1000 1000
9000
출처
Ulm Local 2006