HCT08 - Tráo bài 1 - CARD
Dữ liệu vào: Standard input
Dữ liệu ra: Standard output
Giới hạn thời gian: 1.0 giây
Giới hạn bộ nhớ: 128 megabyte
Đăng bởi: phanhieubl

Alice là người chia bài tại bàn chơi Poker trong một Casino ResortWorld vừa mới mở. Không giống như những người mới vào nghề khác, cô có 2 cách di chuyển một quân bài khi tráo bài:

  • Cách A: Cô lấy 1 quân bài ở trên cùng và chuyển nó xuống dưới cùng bộ bài
  • Cách B: Cô lấy 1 quân bài ở vị trí thứ hai từ trên xuống và chuyển nó xuống dưới cùng của bộ bài.

Ban đầu, Alice có m quân bài (chú ý rằng m có thể nhiều hơn 52 quân bài của một bộ bài chuẩn), mỗi quân bài được đánh nhãn: quân bài trên cùng được đánh nhãn 0 và quân bài dưới cùng được đánh nhãn m – 1.

Xét một dãy các thao tác di chuyển: ABBABA

Bảng dưới đây thể hiện bộ bài 6 quân sau khi áp dụng mỗi bước chuyển trong dãy thao tác:

Thao tác

A

B

B

A

B

A

Kết thúc

Vị trí các quân bài sau mỗi thao tác di chuyển.

0

1

1

1

4

4

0

1

2

3

4

5

0

2

2

3

4

5

0

2

3

3

4

5

0

2

3

1

4

5

0

2

3

1

5

5

0

2

3

1

5

4

 

Yêu cầu đặt ra cho chúng ta là: cho trước một dãy thao tác di chuyển và 1 số k; trong đó 0 < k < m – 1, hãy cho biết nhãn của các quân bài thứ k – 1, thứ k và thứ k + 1, tính từ trên xuống, của bộ bài sau khi áp dụng các thao tác di chuyển. Ở đây, quân bài trên cùng có nhãn là quân bài thứ 0. Ví dụ như trên, nếu k = 3 thì câu trả lời là “3 1 5”.

Input: CARD1.INP

  • Chứa hai số m và k (0 < k < m, 3 ≤ m ≤ 1000000) và dãy thao tác được viết trên một dòng. Kí tự cuối cùng của input là kí tự chấm ". ", đó là dấu hiệu kết thúc của input. Tổng số bước di chuyển trong đoạn từ 1 đến 100000.

Output: CARD1.OUT

  • Chương trình của bạn phải viết ra nhãn của các quân bài thứ k − 1, quân bài thứ k và quân bài thứ k + 1 tính từ trên xuống dưới của bộ bài sau khi áp dụng việc di chuyển các quân bài theo dãy thao tác.

Ví dụ

CARD1.INP

CARD1.OUT

6 3 ABBABA.

3 1 5

Back to Top