Packmen

Đề bài

Mô tả

Cho một dải ô gồm n ô vuông được đánh số từ 1 đến n. Mỗi ô có thể chứa một trong ba ký tự:

  • P — có một Packman đứng ở ô đó.
  • * — có một viên thức ăn ở ô đó.
  • . — ô trống.

Mỗi đơn vị thời gian, mỗi Packman có thể di chuyển sang một ô kề bên (sang trái hoặc sang phải). Khi Packman đi vào một ô có thức ăn, nó ăn viên thức ăn đó ngay lập tức (không tốn thời gian). Một Packman được phép đổi hướng tùy ý nhiều lần nhưng không được rời khỏi dải. Nhiều Packman có thể đứng trên cùng một ô và không cản trở lẫn nhau.

Hãy tìm thời gian nhỏ nhất để tất cả các viên thức ăn đều bị ăn.

Dữ liệu vào

  • Dòng đầu chứa số nguyên n — độ dài của dải.
  • Dòng thứ hai chứa xâu độ dài n gồm các ký tự ., *, P mô tả dải ô.

Dữ liệu ra

  • In ra một số nguyên duy nhất — thời gian nhỏ nhất cần thiết để ăn hết toàn bộ thức ăn.

Ràng buộc

  • 2n105.
  • Đảm bảo có ít nhất một Packman và ít nhất một viên thức ăn.

Ví dụ

Input Output Giải thích
7
..PP*
3 Packman ở vị trí 4 đi sang trái và ăn * ở vị trí 1 sau 3 đơn vị thời gian. Cùng lúc đó, Packman ở vị trí 6 đi sang trái ăn * ở vị trí 5 (mất 1), rồi quay lại sang phải ăn * ở vị trí 7 (mất thêm 2). Tổng cộng cần 3 đơn vị thời gian.
10
.**PP.P.
2 Packman ở vị trí 4 đi sang trái ăn *32 trong 2 đơn vị. Hai Packman còn lại (vị trí 58) cùng đi sang phải, lần lượt ăn *710 cũng trong 2 đơ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.47 awk 1.3.4 gcc 16.2.0 dotnet 10.0.400 g++ 16.2.0 g++-themis 16.2.0 g++17 16.2.0 g++20 16.2.0 g++23 16.2.0 clang++ 22.1.8 dmd 2.113.0 dart 3.13.2 gforth 0.7.3 gfortran 12.2.0 go 1.27.0 groovyc 5.1.1 javac 25.0.4 node 26.8.1 julia 1.12.7 kotlinc 2.4.10 lean 4.33.1 sbcl 2.2.9 lua 5.4.9 nim 2.2.10 fpc 3.2.2 fpc-themis 3.2.2 perl 5.36.0 php 8.5.10 pike 8.0 swipl 9.0.4 pypy3 7.3.23 python3 3.14.7 racket 8.7 ruby 4.0.6 rustc 1.98.0 csc 5.3.0 ctoj-scratch 0.0.1 sed 4.9 swiftc 6.3.3 tclsh 8.6 bun 1.4.0 deno 2.9.6 v 0.5.2 zig 0.16.0