비행기

면접 대비

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

요약
통로를 따라 걸어가 자기 좌석 행에서 5초간 짐을 싣고 앉는 승객들을 앞사람에 막히는 상황까지 고려해 시뮬레이션하여 전체 탑승 완료 시간을 구합니다.
난이도

보통10점 중 5점

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

문제

탑승해 좌석을 찾는 승객들과, 행을 따라 놓인 단 하나의 복도가 있는 비행기를 상상해 보자.

모든 승객은 반드시 자기 좌석에 앉아야 한다. 탑승구는 첫 번째 좌석 행 바로 앞에 있고, 승객들은 불필요하게 멈추지 않고 차례대로 복도로 들어온다.

승객은 복도를 걸어가며, 한 행을 지나 다음 행으로 전진하는 데 정확히 1초가 걸린다(바로 앞 행에 다른 승객이 있으면 그 자리에 머문다). 자기 행에 도착한 순간부터는 짐을 넣기 위해 5초를 쓴 뒤 자리에 앉는다.

복도의 한 행에는 동시에 한 명의 승객만 있을 수 있다. 모든 승객이 자리에 앉는 데, 즉 비행기가 이륙 준비를 마치는 데 걸리는 시간을 계산하는 프로그램을 작성하여라.

입력

첫째 줄에 승객 수 N이 주어진다. (1 ≤ N ≤ 1000)

다음 N개의 줄에는 각 승객이 앉아야 하는 좌석의 행 번호 R이 한 줄에 하나씩 주어진다. (1 ≤ R ≤ 1000)

승객은 1번부터 N번까지 번호가 매겨지며, 그 순서대로 입력된다. 같은 행에 앉는 승객의 수에는 제한이 없다.

출력

모든 승객이 자리에 앉는 데 걸리는 시간(초)을 첫째 줄에 출력한다.

힌트

4번 행으로 가는 승객 바로 뒤에 1번 행으로 가는 승객이 있다면, 뒤 승객이 먼저 짐을 싣고 앉을 수 있다.

예제3

  1. 예제 1

    입력
    1
    3
    
    예상 출력
    7
    
  2. 예제 2

    입력
    2
    3
    3
    
    예상 출력
    12
    
  3. 예제 3

    입력
    4
    4
    4
    1
    5
    
    예상 출력
    19