레이저 조각

시간 제한2초메모리 제한512 MB

요약
블록의 목표 높이 프로필이 주어질 때, 원하는 모양으로 깎는 데 필요한 1mm 레이저 스윕 횟수를 구합니다.
난이도

보통10점 중 5점

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

문제

레이저는 1958년에 발명된 뒤로 전자 장비, 수술 기구, 무기 등 아주 다양한 곳에 쓰이고 있다.

위 그림은 레이저로 단단한 재료 덩어리를 조각하는 장비의 개략도다. 그림에는 일정한 속도로 좌우로 움직이는 레이저 발사기가 있다. 발사기가 움직이는 동안 레이저를 켜면, 레이저가 켜져 있던 구간에서 두께가 일정한 층이 증발해 덩어리에서 떨어져 나간다.

아래 그림은 조각 과정을 보여준다. (a)는 높이 5 mm, 길이 8 mm인 처음 상태의 덩어리, (b)는 조각을 마쳤을 때 요구되는 모양, (c)는 한 번 지나갈 때 두께 1 mm인 층이 떨어져 나간다고 할 때 층을 걷어내는 순서다. 첫 번째 왕복에서 1번으로 표시된 조각이 떨어져 나가고, 두 번째 왕복에서 2번으로 표시된 조각이 떨어져 나가며, 이런 식으로 이어진다. 이 과정에서 떨어져 나간 조각마다 한 번씩, 레이저를 모두 7번 켰다.

덩어리의 높이와 길이, 그리고 조각을 마쳤을 때의 최종 모양이 주어졌을 때, 그 모양으로 조각하려면 레이저를 모두 몇 번 켜야 하는지 구하는 프로그램을 작성하시오.

입력

입력은 여러 개의 테스트 케이스로 이루어진다. 각 테스트 케이스는 두 줄이다.

첫째 줄에는 조각할 덩어리의 높이 AA와 길이 CC가 공백 하나로 구분되어 주어진다. 단위는 밀리미터다 (1≤A≤1041 \le A \le 10^4, 1≤C≤1041 \le C \le 10^4).

둘째 줄에는 정수 CC개 X0,X1,…,XC−1X_0, X_1, \dots, X_{C-1}이 공백으로 구분되어 주어진다. XiX_i는 길이 방향으로 위치 ii와 위치 i+1i+1 사이 구간에서 덩어리의 최종 높이를 밀리미터 단위로 나타낸다 (0≤Xi≤A0 \le X_i \le A).

레이저가 켜져 있는 구간에서는 한 번 지나갈 때마다 두께 1밀리미터인 층이 덩어리에서 떨어져 나간다.

입력의 마지막 줄에는 공백 하나로 구분된 0 두 개만 주어진다.

출력

각 테스트 케이스마다 한 줄에 정수 하나를 출력한다. 이 정수는 주어진 모양으로 덩어리를 조각하려면 레이저를 몇 번 켜야 하는지를 나타낸다.

예제6

  1. 예제 1

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

    입력
    3 4
    3 3 3 3
    0 0
    
    예상 출력
    0
    
  3. 예제 3

    입력
    5 4
    0 0 0 0
    0 0
    
    예상 출력
    5
    
  4. 예제 4

    입력
    2 5
    0 2 0 2 0
    0 0
    
    예상 출력
    6
    
  5. 예제 5

    입력
    1 1
    0
    1 1
    1
    0 0
    
    예상 출력
    1
    0
    
  6. 예제 6

    입력
    6 6
    6 5 4 3 2 1
    6 6
    1 2 3 4 5 6
    0 0
    
    예상 출력
    5
    5