만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

자전거 묘기

면접 대비

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

요약
각 시작 칸에서 출발해 램프를 따라 앞으로 달릴 때 밟는 칸의 수를 구합니다.
난이도

쉬움10점 중 3점

유형
동적 계획법, 배열
정답자
아직 제출이 없습니다

문제

길이가 NN미터인 직선 자전거 도로가 있다. 도로는 길이가 1미터인 NN개의 칸으로 나뉘어 있고, 가장 왼쪽 칸부터 순서대로 1번 칸, 2번 칸, …, NN번 칸이다.

도로의 각 칸에는 점프대가 설치되어 있을 수 있다. ii번 칸에 설치된 점프대의 높이를 hih_i라고 하자. 높이가 hih_i인 점프대를 밟으면 다른 요인과 관계없이 다음 hih_i칸 위를 비행한 뒤 그다음 칸에 착지한다. 다음 예시를 확인해 보자.

자전거를 타고 1번 칸에서 출발해 앞으로 달리면 다음 일이 순서대로 일어난다.

  1. 1번 칸에는 점프대가 없으므로 2번 칸으로 주행한다.
  2. 2번 칸에 높이가 1인 점프대가 있어 3번 칸 위를 비행하고 4번 칸에 착지한다.
  3. 4번 칸에 높이가 2인 점프대가 있어 5번 칸과 6번 칸 위를 비행하고 7번 칸에 착지한다.
  4. 7번 칸에는 점프대가 없으므로 8번 칸으로 주행한다.
  5. 8번 칸에 높이가 3인 점프대가 있어 9번 칸 위를 비행하여 저 멀리 나아간다. (도로가 충분히 길었다면 가상의 12번 칸에 착지하였을 것이다.)

시은이는 각 칸에서 자전거를 타고 출발해 앞으로 달릴 때 도로 위에서 몇 개의 칸을 밟게 되는지 알고 싶어 한다. NN개의 칸을 하나씩 실험하기는 너무 번거롭다. 시은이는 아래 표를 만들어 보고, 어떤 칸의 답을 그 오른쪽 칸의 답으로부터 구할 수 있다는 것을 알아냈다.

출발한 칸답밟는 칸
151, 2, 4, 7, 8
242, 4, 7, 8
343, 4, 7, 8
434, 7, 8
535, 7, 8
636, 7, 8
727, 8
818
919

1번 칸에는 점프대가 없으므로 그 답은 2번 칸의 답에 1을 더한 값이다. 높이 1의 점프대가 있는 2번 칸의 답은 한 칸을 건너뛴 4번 칸의 답에 1을 더한 값이다. 다른 칸도 같은 방식으로 구한다. 8번 칸과 9번 칸은 각각 8번 칸, 9번 칸만 밟고 도로를 벗어나므로 답이 모두 1이다.

입력

첫 번째 줄에 도로의 길이 NN이 주어진다.

두 번째 줄에 1번 칸부터 NN번 칸까지 순서대로 각 칸에 설치된 점프대의 높이가 공백으로 구분되어 주어진다. 점프대가 없는 칸은 0이 주어진다.

출력

1번 칸부터 NN번 칸까지 순서대로, 각 칸에서 자전거를 타고 앞으로 달리면 총 몇 개의 칸을 밟게 되는지 출력한다. 각 출력은 공백으로 구분한다.

제한

  • 1≤N≤200,0001 \le N \le 200,000
  • 1≤1 \le 점프대의 높이 ≤200,000\le 200,000

예제3

  1. 예제 1

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

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

    입력
    1
    200000
    
    예상 출력
    1