만드는 중입니다

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

더 큰 소코반 40k

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

요약
최소 40,000번의 이동이 필요한 2x2 상자와 2x2 저장 위치 하나를 가진 Bigger Sokoban 격자를 만듭니다.
난이도

어려움10점 중 9점

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

문제

소코반은 유명한 퍼즐 게임이다. 플레이어는 N×MN \times M 크기의 격자 안을 움직이며 1×11 \times 1 크기의 상자를 1×11 \times 1 크기의 보관 장소로 민다.

더 큰 소코반은 상자와 보관 장소가 1×11 \times 1보다 큰 소코반의 변형이다. 이 문제에서는 둘 다 2×22 \times 2 크기이다.

더 큰 소코반의 규칙은 소코반과 같다. 격자의 각 칸은 빈칸이거나 벽이다. 일부 2×22 \times 2 빈칸 영역에는 2×22 \times 2 크기의 상자가 하나씩 놓여 있고, 일부 2×22 \times 2 빈칸 영역은 각각 2×22 \times 2 크기의 보관 장소로 표시되어 있다.

플레이어는 상하좌우로 인접한 빈칸으로 이동한다. 벽, 상자, 격자 밖은 지나갈 수 없다. 플레이어가 상자가 있는 칸으로 들어가려 하면 상자는 그 방향으로 한 칸 밀린다. 상자는 다른 상자, 벽, 격자 밖으로 밀 수 없고, 당길 수도 없다. 상자의 개수는 보관 장소의 개수와 같다. 모든 상자가 보관 장소에 놓이면 퍼즐이 풀린다.

풀기 위해 40,000번 이상의 이동이 필요한 더 큰 소코반 격자를 만들어라. 격자는 다음 조건을 만족해야 한다.

  • 1≤N,  M,  N+M≤1001 \leq N, \; M, \; N+M \leq 100.
  • 격자에는 상자 하나와 보관 장소 하나가 있다.
  • 플레이어, 상자, 보관 장소는 서로 겹치지 않는다.

입력

이 문제에는 입력이 없다.

출력

첫 줄에 격자의 크기를 나타내는 두 정수 NN과 MM을 공백으로 구분해 출력한다.

이어서 NN줄에 걸쳐 격자의 각 행을 나타내는 길이 MM의 문자열을 출력한다. 문자열은 ., #, P, B, S로 이루어지며, 각각 빈칸, 벽, 플레이어, 상자, 보관 장소를 뜻한다.

격자에는 P가 정확히 하나, B가 정확히 네 개, S가 정확히 네 개 있어야 한다. B는 하나의 2×22 \times 2 정사각형을 이뤄야 하고, S도 하나의 2×22 \times 2 정사각형을 이뤄야 한다. 격자는 반드시 풀 수 있어야 한다.

예제1

  1. 예제 1

    입력
    <There are no inputs>
    
    예상 출력
    5 6
    ....SS
    ....SS
    .#BB#.
    ..BB.P
    ......