Kẻ trốn vé trên tàu

Đề bài

Mô tả

Một đoàn tàu gồm n toa, đánh số từ 1 đến n tính từ đầu tàu về phía đuôi. Trên tàu có một kẻ trốn vé đang ở toa m và một người soát vé đang ở toa k (với mk).

Trò chơi diễn ra theo từng phút. Mỗi phút, đoàn tàu có thể đang chạy hoặc đứng yên (dừng tại ga). Cả hai người chơi đều di chuyển một lượt mỗi phút.

Người soát vé luôn có hướng di chuyển — hoặc về phía đầu tàu, hoặc về phía đuôi tàu. Mỗi lượt người soát vé di chuyển đúng một toa theo hướng hiện tại. Nếu sau lượt đó người soát vé đến toa 1 hoặc toa n, hướng di chuyển sẽ được đảo lại trong lượt tiếp theo. Như vậy người soát vé luôn có duy nhất một nước đi.

Kẻ trốn vé di chuyển tuỳ theo trạng thái của tàu:

  • Nếu tàu đang chạy: kẻ trốn vé có thể chuyển sang một toa kề bên hoặc đứng yên tại toa hiện tại.
  • Nếu tàu đang đứng yên tại một ga (không phải ga cuối): kẻ trốn vé rời khỏi tàu trong lúc người soát vé đi, sau đó quay lại tàu và vào bất kỳ toa nào trong n toa (không nhất thiết là toa cũ hay toa kề).

Thứ tự nước đi trong mỗi phút:

  • Nếu tàu đang chạy: kẻ trốn vé đi trước, người soát vé đi sau.
  • Nếu tàu đang đứng yên: kẻ trốn vé rời tàu trước, người soát vé đi tiếp, rồi kẻ trốn vé lên lại tàu (vào toa khác toa của người soát vé).

Nếu vào bất kỳ thời điểm nào cả hai cùng ở chung một toa thì người soát vé thắng — và phút khi điều đó xảy ra được ghi nhận. Nếu tàu đến ga cuối (phút cuối luôn ở trạng thái đứng yên), kẻ trốn vé rời tàu lần cuối và không quay lại nữa — kẻ trốn vé thắng.

Hai người chơi đều biết vị trí của nhau tại mọi thời điểm và đều chơi tối ưu. Người soát vé luôn có nước đi duy nhất nên hành động của anh ta là cố định. Kẻ trốn vé chơi sao cho thắng nếu có thể, ngược lại cố gắng kéo dài thời điểm bị bắt lâu nhất có thể. Hãy xác định người thắng cuộc.

Dữ liệu vào

  • Dòng đầu chứa ba số nguyên n, m, k (2n50; 1m,kn; mk) — số toa tàu, vị trí ban đầu của kẻ trốn vé và của người soát vé.
  • Dòng thứ hai chứa hướng di chuyển ban đầu của người soát vé, là một trong hai chuỗi to head (về phía đầu tàu) hoặc to tail (về phía đuôi tàu). Đảm bảo theo hướng đó còn ít nhất một toa để người soát vé bước tới.
  • Dòng thứ ba là một chuỗi gồm các ký tự 01, độ dài từ 1 đến 200. Ký tự thứ i thể hiện trạng thái của tàu ở phút thứ i: 0 nghĩa là tàu đang chạy, 1 nghĩa là tàu đang đứng yên. Ký tự cuối cùng luôn là 1 — đó là ga cuối.

Dữ liệu ra

In ra Stowaway nếu kẻ trốn vé thắng. Ngược lại, in ra Controller, theo sau là một dấu cách và phút mà kẻ trốn vé bị bắt.

Ví dụ

Input Output Giải thích
5 3 2
to head
0001001
Stowaway Kẻ trốn vé có thể di chuyển giữa các toa và tận dụng phút dừng ở giữa hành trình để chọn vị trí phù hợp, an toàn đến ga cuối.
3 2 1
to tail
0001
Controller 2 Phút 1: kẻ trốn vé đi sang toa 3, người soát vé sang toa 2. Phút 2: kẻ trốn vé buộc phải ở 3 hoặc lùi về 2; người soát vé tiến sang toa 3 và bắt được kẻ trốn vé.

Bình luận

Không có bình luận tại thời điểm này.

gnatmake 12.2.0 a68g 3.1.2 nasm 2.16.1 as_x64 2.46 awk 1.3.4 gcc 16.1.0 csc 6.12.0.200 g++ 16.1.0 g++-themis 16.1.0 g++17 16.1.0 g++20 16.1.0 g++23 16.1.0 clang++ 22.1.6 dmd 2.112.0 dart 3.12.1 gforth 0.7.3 gfortran 12.2.0 go 1.26.3 groovyc 5.0.6 javac 25.0.3 node 26.2.0 kotlinc 2.3.21 sbcl 2.2.9 lua 5.4.8 nim 2.2.10 fpc 3.2.2 fpc-themis 3.2.2 perl 5.36.0 php 8.5.6 pike 8.0 pypy3 7.3.23 python3 3.14.5 racket 8.7 ruby 4.0.5 rustc 1.96.0 csc 5.3.0 ctoj-scratch 0.0.1 sed 4.9 tclsh 8.6 bun 1.3.14 deno 2.8.1 v 0.5.1 zig 0.16.0