아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

UFO 비행장 (UFO) 3

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

요약
B x D 크기의 UFO 모양을 W x H 격자 위에 최대한 많이 배치하되, 각 UFO는 착륙 가능한 칸만 차지하고 서로 변을 공유하지 않아야 한다.
난이도

어려움10점 중 8점

유형
백트래킹, 완전 탐색, 그리디, 구현
정답자
아직 제출이 없습니다

문제

IOI별의 우주인들은 일본에 있는 JOI 공원(일반인에게는 존재가 비밀로 유지되고 있다)에 UFO 비행장을 지을 계획을 세우고 있다. IOI별의 우주인들은 JOI 공원을 조사하여 UFO가 착륙할 수 있는 장소를 나타낸 지도를 만들었다.

JOI 공원은 동서 W 미터, 남북 H 미터의 직사각형이며, 1 미터 정사각형 구획으로 나뉘어 있다. 구획은 모두 W × H 개이고, 서쪽에서 x번째 열, 북쪽에서 y번째 행의 구획을 (x, y)로 나타낸다. 북서쪽 모서리의 구획은 (1, 1)이고, 남동쪽 모서리의 구획은 (W, H)이다. 각 구획은 "착륙 가능" 또는 "착륙 불가능" 중 하나이며, "착륙 가능"은 ".", "착륙 불가능"은 "w"로 나타낸다.

IOI별의 우주인들이 만드는 UFO는 너비 B 미터, 깊이 D 미터 안에 들어간다. 이 UFO는 규격상 설계도에서의 위아래좌우가 각각 UFO에서 북, 남, 서, 동 방향이 되도록, 또한 설계도의 왼쪽 위 모서리가 JOI 공원의 어떤 구획의 왼쪽 위와 일치하도록 착륙해야 한다. UFO의 설계도는 D행 B열의 격자로 이루어져 있다. 칸은 모두 B × D 개이고, 왼쪽에서 i번째 열, 위에서 j번째 행의 칸을 (i, j)로 나타낸다. 왼쪽 위 칸은 (1, 1)이고, 오른쪽 아래 칸은 (B, D)이다. 칸 (i, j)는 UFO의 서쪽 끝에서 i − 1 미터~i 미터, 북쪽 끝에서 j − 1 미터~j 미터의 정사각형 범위에 UFO의 일부가 포함되는지 여부를 나타낸다. 각 칸은 UFO의 일부가 "포함됨" 또는 "포함되지 않음" 중 하나이며, 포함되는 경우는 "O"(대문자 오), 포함되지 않는 경우는 "."로 나타낸다.

UFO 한 개가 착륙할 때, 설계도상의 칸에서 UFO에 "포함됨"인 모든 위치는 착륙 시 "착륙 가능"한 구획에 포함되어야 한다. 또한 여러 UFO가 착륙할 때는, 어떤 UFO의 설계도상의 칸에서 "포함됨"인 모든 위치는 다른 UFO의 설계도상의 칸에서 "포함됨"인 어떤 위치와도 변을 공유할 수 없다. 다만, UFO는 꼭짓점을 공유하는 위치에 착륙할 수 있다.

당신은 우연히도 IOI별의 친선 대사로 선출되었다. 따라서 당신에게는 가능한 한 많은 UFO의 착륙이 가능한 비행장을 만드는 계획서를 만들어 달라고 요청한다.

JOI 공원에 지을 UFO 비행장의 계획서를 작성하라. 더 많은 개수의 UFO를 착륙시키는 계획서를 만들수록 당신은 더 높은 점수를 얻는다. 계획서는 JOI 공원의 지도 위에 착륙한 UFO를 덧그린 것이며, JOI 공원의 "착륙 가능"한 구획 중 착륙한 UFO가 포함되는 구획을 "O"(대문자 오), 착륙한 UFO가 포함되지 않는 구획을 "."로 나타내고, "착륙 불가능"한 구획은 "w"로 나타낸다.

각 입력 데이터에 대한 출력을 제출하라. 그때 출력의 섹션에서 지정된 형식과 일치하는지만 검사한다.

입력

입력 파일은 다음 형식으로 주어진다.

  • 1번째 줄에는 정수 B, D가 공백을 구분으로 쓰여 있으며, UFO의 너비가 B 미터, 깊이가 D 미터임을 나타낸다.
  • 이어지는 D줄에는 UFO의 설계도 정보가 쓰여 있다. j + 1번째 줄 (1 ≤ j ≤ D)에는 B 문자로 이루어진 문자열이 쓰여 있고, i번째 문자 (1 ≤ i ≤ B)에는 설계도의 칸 (i, j)를 나타내는 "O" 또는 "." 문자가 쓰여 있다.
  • D+2번째 줄에는 정수 W, H가 공백을 구분으로 쓰여 있으며, JOI 공원의 동서 방향 크기가 W 미터, 남북 방향 크기가 H 미터임을 나타낸다.
  • 이어지는 H줄에는 JOI 공원의 지도 정보가 쓰여 있다. y + D + 2번째 줄 (1 ≤ y ≤ H)에는 W 문자로 이루어진 문자열이 쓰여 있고, x번째 문자 (1 ≤ x ≤ W)에는 공원의 구획 (x, y)를 나타내는 "." 또는 "w" 문자가 쓰여 있다.

출력

출력의 y번째 줄 (1 ≤ y ≤ H)에는 공원의 북쪽에서 y번째 행의 상태를 나타내는 W 문자로 이루어진 문자열을 써라. y번째 줄 (1 ≤ y ≤ H)의 x번째 문자 (1 ≤ x ≤ W)는 구획 (x, y)의 상태를 나타내는 "O" 또는 "." 또는 "w" 중 하나의 문자이다.

제한

  • 1 ≤ B ≤ 5 UFO의 너비 (미터)
  • 1 ≤ D ≤ 5 UFO의 깊이 (미터)
  • 1 ≤ W ≤ 200 JOI 공원의 동서 방향 크기 (미터)
  • 1 ≤ H ≤ 200 JOI 공원의 남북 방향 크기 (미터)

힌트

이 출력 예는 11개의 UFO를 착륙시킬 수 있는 계획서이다.

예제1

  1. 예제 1

    입력
    4 3
    O..O
    OOOO
    .O..
    20 10
    ....................
    .w......w.......ww..
    ....ww......w.w.....
    .w.....w............
    ...w......w.........
    w................ww.
    ....w...............
    .w.....w........w.ww
    ............w.......
    ....w..............w
    
    예상 출력
    ..O..O......O..O....
    .wOOOO.Ow.O.OOOOww..
    ...Oww.OOOO.wOw.O..O
    .w.....wO..O..O.OOOO
    .O.wO.O..OwOOOO..O..
    wOOOO.OOOO..O...OwwO
    ..O.w..O..O..O..OOOO
    Ow.O.O.wO.OOOO..wOww
    OOOO.OOOO..Ow.......
    .O..w.O............w