트랙 정리하기

시간 제한1초메모리 제한1024 MB

요약
원형 트랙에서 시계 방향으로 걷던 달구가 쓰레기가 있는 구역에 도달하면 쓰레기 하나를 치우고 방향을 바꾼다. 모든 쓰레기를 치울 때까지 이동한 총 거리를 구한다.
난이도

보통10점 중 7점

유형
시뮬레이션, 수학, 구현, 그리디
정답자
아직 제출이 없습니다

문제

DGIST 운동회가 끝난 다음 날, 달구는 쓰레기로 가득 찬 길이 NN의 원형 육상 트랙을 정리하려고 한다.

원형 트랙은 둘레를 따라 시계 방향으로 11번 구역부터 NN번 구역까지 총 NN개의 구역이 11의 간격으로 나열되어 있다. 그중 ii번 구역에는 쓰레기 A_iA\_i개가 쌓여 있으며, 달구는 모든 구역의 쓰레기를 치우고자 한다. 쓰레기를 치우던 달구는 지루함을 달래기 위해 다음과 같은 방식으로 쓰레기를 치우고자 한다.

  • 달구는 쓰레기가 하나도 없는 11번 구역에서 트랙 정리를 시작하며, 시계 방향으로 이동한다.
  • 만약 도달한 구역에 쓰레기가 없다면 이동 방향 그대로 계속 이동한다.
  • 만약 도달한 구역에 쓰레기가 있다면 해당 구역의 쓰레기 한 개를 치운 뒤 이동 방향을 반대로 바꾼다.
  • 모든 구역의 쓰레기를 모두 치우면 트랙 정리를 끝마치고 이동을 멈춘다.

이런 방식으로 트랙을 정리하던 달구는 문득 트랙 정리를 끝낼 때까지 얼마나 많은 거리를 이동해야 하는지 의문이 들었다! 달구를 위해, 달구가 이동해야 하는 총 거리를 알려주자.

입력

첫째 줄에 구역의 개수 NN이 주어진다. (2≤N≤200,000)(2\le N\le 200\\,000)

둘째 줄에 각 구역에 있는 쓰레기의 개수를 나타내는 정수 A_1,A_2,⋯ ,A_NA\_1, A\_2, \cdots, A\_N이 공백으로 구분되어 주어진다. (0≤A_i≤10,000;(0\le A\_i \le 10\\,000; A_1=0)A\_1=0)

출력

주어진 조건에 따라 달구가 움직일 때, 이동해야 하는 총 거리를 출력한다.

예제3

  1. 예제 1

    입력
    5
    0 2 0 1 1
    
    예상 출력
    8
    
  2. 예제 2

    입력
    3
    0 1 5
    
    예상 출력
    15
    
  3. 예제 3

    입력
    6
    0 5 3 2 5 2
    
    예상 출력
    55