은행
시간 제한5초메모리 제한256 MB
원에서 음수 자본을 양수로 뒤집을 때마다 양쪽 이웃 자본에서 같은 금액을 빼며 모든 자본을 0 이상으로 만드는 최소 뒤집기 횟수를 구합니다.
문제
원더랜드의 월 스트리트에는 은행이 개 있다. 은행은 원형으로 늘어서 있어서 은행마다 왼쪽 이웃과 오른쪽 이웃이 하나씩 있다. 첫 은행의 왼쪽 이웃은 마지막 은행이고, 마지막 은행의 오른쪽 이웃은 첫 은행이다. 은행에는 번부터 번까지 번호가 붙어 있고, 번 은행의 왼쪽 이웃은 번 은행, 오른쪽 이웃은 번 은행이다.
번 은행의 자본은 다. 모든 은행의 자본을 더한 값은 양수다.
어떤 은행 의 자본 가 음수이면, 은행 요정이 마법 이동을 한 번 써서 그 자본을 양수로 바꾼다. 이었다면 마법 이동 뒤에는 이 된다. 대가는 두 이웃이 치른다. 왼쪽 이웃과 오른쪽 이웃은 각각 자본이 만큼 줄어든다. 왼쪽 이웃의 자본이 , 오른쪽 이웃의 자본이 이었다면 마법 이동 뒤에는 각각 와 가 된다.
감소는 이웃 관계마다 따로 적용된다. 그래서 이면 남은 한 은행이 왼쪽 이웃이면서 오른쪽 이웃이므로 자본이 만큼 줄어든다. 이면 유일한 자본이 양수이므로 마법 이동을 쓸 상황이 생기지 않는다.
모든 은행의 자본을 이상으로 만들려면 은행 요정은 마법 이동을 최소 몇 번 해야 하는가?
입력
첫째 줄에 은행의 수 이 주어진다. ()
둘째 줄에 월 스트리트에 놓인 순서대로 자본 이 공백 하나로 구분되어 주어진다. 각 자본은 인 정수이고, 전체 합은 양수다.
출력
마법 이동의 최소 횟수를 한 줄에 출력한다.