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.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