만드는 중입니다

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

비행기 좌석 배정 알고리즘

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

요약
3-3-3 좌석 배열의 비행기에서 출구열 뒤 빈 좌석이 가장 많은 줄을 고르고, 우선순위와 좌우 균형에 따라 n명의 좌석을 배정합니다.
난이도

보통10점 중 4점

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

문제

우리의 자랑인 Croatia Airlines는 수십억 유로를 투자해, 먼저 항공권을 구매한 승객에게 더 좋은 좌석을 배정하는 정교한 알고리즘을 만들고 있다.

좌석은 rr개의 행에 걸쳐 있으며, rr은 짝수이다. 좌석이 없는 비상구 행이 세 개 있다. 첫 번째 비상구 행은 비행기의 맨 앞(첫 좌석 행 앞)에, 두 번째 비상구 행은 정확히 비행기의 중간에, 세 번째 비상구 행은 맨 뒤(마지막 좌석 행 뒤)에 있다. 행은 앞에서 뒤로 1부터 r+3r+3까지 자연수로 번호가 매겨진다. 따라서 11번, r/2+2r/2+2번, r+3r+3번 행이 비상구 행이고, 나머지 행에는 좌석이 있다.

좌석 배치는 3-3-3이다. 각 좌석 행은 통로를 사이에 둔 세 묶음의 좌석 세 개로 이루어진다. 좌석은 왼쪽에서 오른쪽으로 ABC.DEF.GHI와 같이 연속된 글자로 표시한다.

승객이 항공권을 구매하면 알고리즘은 다음 규칙에 따라 좌석을 배정한다.

  1. 비상구 행 바로 뒤의 행에 빈 좌석이 하나라도 있으면, 이 조건을 만족하지 않는 나머지 행은 다음 규칙에서 고려하지 않는다.
  2. 빈 좌석이 가장 많은 행을 고른다. 그런 행이 여러 개이면 비상구 행과 가장 가까운 행을 고른다. 두 행 aa와 bb 사이의 거리는 ∣a−b∣|a-b|이다. 그래도 여러 개이면 번호가 가장 작은 행을 고른다.
  3. 선택한 행의 빈 좌석을 모두 고려해 우선순위가 가장 높은 좌석을 고른다. 우선순위는 높은 순서대로 다음과 같다.
    1. 가운데 묶음의 통로 쪽 좌석 (D, F)
    2. 첫 번째와 세 번째 묶음의 통로 쪽 좌석 (C, G)
    3. 창가 좌석 (A, I)
    4. 가운데 묶음의 가운데 좌석 (E)
    5. 나머지 가운데 좌석 (B, H)

우선순위가 같은 빈 좌석이 두 개 이상이면 비행기 전체의 균형을 본다. 왼쪽 좌석(A, B, C, D)과 오른쪽 좌석(F, G, H, I) 중 빈 좌석이 더 많은 쪽의 좌석을 고른다. 두 쪽의 빈 좌석 수가 같으면 왼쪽 좌석을 고른다.

입력

첫 줄에 자연수 rr과 nn이 주어진다 (2≤r≤502 \le r \le 50, 1≤n≤261 \le n \le 26). 이어서 r+3r+3개의 줄에 현재 좌석 상태가 주어진다. 각 줄은 정확히 11글자이며, 비상구 행과 통로는 '.'으로, 예약된 좌석은 '#'으로, 빈 좌석은 '-'으로 표시된다.

비행기에 빈 좌석이 적어도 nn개 있다고 가정해도 된다.

출력

r+3r+3개의 줄에 nn명의 승객에게 좌석을 배정한 뒤의 좌석 상태를 출력한다. 출력 형식은 입력과 같으며, jj번째 승객에게 배정된 좌석은 jj번째 영어 소문자로 표시한다.

예제2

  1. 예제 1

    입력
    2 17
    ...........
    ---.#--.---
    ...........
    ---.---.---
    ...........
    
    예상 출력
    ...........
    hnd.#lb.fpj
    ...........
    kqg.cma.eoi
    ...........
    
  2. 예제 2

    입력
    6 26
    ...........
    ---.---.###
    #-#.---.---
    ---.###.---
    ...........
    ---.###.---
    #--.#-#.--#
    #--.--#.#-#
    ...........
    
    예상 출력
    ...........
    gke.aic.###
    #-#.mzo.r-v
    x-p.###.n-t
    ...........
    fjb.###.dlh
    #-s.#-#.w-#
    #-u.qy#.#-#
    ...........