QOJ.ac

QOJ

時間限制: 1.0 s 記憶體限制: 512 MB 總分: 100

#18081. 체인 솔리테어

统计

이 문제에서는 스콜피온(Scorpion) 솔리테어의 변형을 다룹니다.

52장의 카드로 구성된 덱이 7개의 열로 나뉘어 있습니다. 각 열에는 임의 개수의 카드가 있을 수 있으며, 카드가 없는 열도 존재할 수 있습니다(이러한 열을 빈 열이라고 부릅니다). 각 카드는 무늬($\diamondsuit, \heartsuit, \spadesuit, \clubsuit$)와 숫자(오름차순: A, 2, 3, 4, 5, 6, 7, 8, 9, 10, J, Q, K)를 가집니다.

매 턴마다 다음 동작을 수행할 수 있습니다. 어떤 열의 특정 카드를 선택하여(아무 카드나 선택 가능) 다른 열의 맨 아래 카드 위로 옮깁니다. 이때 선택한 카드 위에 놓인 모든 카드도 함께 이동합니다(열의 하단부를 하나의 단위로 이동). 카드는 같은 무늬이면서 숫자가 정확히 1 큰 카드 위로만 옮길 수 있습니다. 예를 들어, $5\spadesuit$는 $6\spadesuit$ 위로만 옮길 수 있고, $A\heartsuit$는 $2\heartsuit$ 위로만 옮길 수 있습니다. 만약 선택한 카드의 숫자가 K라면, 빈 열로만 옮길 수 있으며(그 위에 놓인 모든 카드와 함께), 이 동작은 해당 카드가 열의 맨 위가 아닌 다른 카드 위에 놓여 있을 때만 가능합니다.

게임의 목표는 킹부터 에이스까지의 무늬별 시퀀스로 이루어진 4개의 열을 만드는 것입니다(K가 열의 맨 위, A가 맨 아래에 위치).

입력

7개의 줄이 주어지며, $i$번째 줄은 $i$번째 열을 설명합니다. 각 줄은 해당 열의 카드 개수를 나타내는 정수 $k_i$ ($0 \le k_i \le 52$)로 시작하며, 이어서 $i$번째 열의 맨 위부터 맨 아래까지의 카드를 설명하는 $k_i$개의 두 글자 문자열이 주어집니다. 첫 번째 문자는 숫자("A", "2", "3", "4", "5", "6", "7", "8", "9", "T", "J", "Q", "K"는 각각 A, 2, 3, 4, 5, 6, 7, 8, 9, 10, J, Q, K를 의미)를 나타내고, 두 번째 문자는 무늬("D", "H", "S", "C"는 각각 $\diamondsuit, \heartsuit, \spadesuit, \clubsuit$를 의미)를 나타냅니다.

입력 데이터에는 52장의 카드가 모두 포함되어 있으며, 각 카드는 정확히 한 번씩 등장함이 보장됩니다.

출력

게임을 이길 수 없다면 "NO"를 출력합니다. 그렇지 않으면 첫 번째 줄에 "YES", 두 번째 줄에 이동 횟수, 세 번째 줄에 이동 순서대로 카드들을 출력합니다. 여러 해결 방법이 있다면 그중 아무거나 출력해도 됩니다.

예제

입력 1

14 KD QD JD TD 9D 8D 7D 6D 5D 4D 3D 2D AD KH
12 AS 6C 5C 4C 3C 2C AC 6S 5S 4S 3S 2S
11 KS QS JS TS 9S 8S 7S 5H 4H 3H 2H
1 KC
0
11 8H 7H 6H QC JC TC 9C 8C 7C QH JH
3 AH TH 9H

출력 1

YES
10
QH 6C AS KH AH QC 5H 6S TH 8H

입력 2

5 JH TH 9H JC AH
2 KH QH
6 6H 2C AC KD 8H 7H
6 QD JD 4H 3H KC QC
10 3S 2S AS 8S 7S 6S 5S 4S QS JS
12 3C TC 9C 8C 7C 6C 5C 4C KS TS 9S 2H
11 TD 9D 8D 7D 6D 5D 4D 3D 2D AD 5H

출력 2

YES
20
JH KD 6H KS JC 8H QD KC 2H TS QS 8S 3S AH TC 3C 2C 5H 4H TD

Discussions

About Discussions

The discussion section is only for posting: General Discussions (problem-solving strategies, alternative approaches), and Off-topic conversations.

This is NOT for reporting issues! If you want to report bugs or errors, please use the Issues section below.

Open Discussions 0
No discussions in this category.

Issues

About Issues

If you find any issues with the problem (statement, scoring, time/memory limits, test cases, etc.), you may submit an issue here. A problem moderator will review your issue.

Guidelines:

  1. This is not a place to publish discussions, editorials, or requests to debug your code. Issues are only visible to you and problem moderators.
  2. Do not submit duplicated issues.
  3. Issues must be filed in English or Chinese only.
Active Issues 0
No issues in this category.
Closed/Resolved Issues 0
No issues in this category.