CSES - Water Containers Moves | Các bước với bình nước

Xem PDF



Tác giả:
Dạng bài
Ngôn ngữ cho phép
Assembly, Awk, C, C#, C++, Clang, Cobol, D, Groovy, Haskell, JS, Java, Kotlin, Lua, Node JS, OCaml, ObjectiveC, Output, PHP, Pascal, Perl, Prolog, Pypy, Pypy 3, Python, Ruby, Rust, Scala, Scratch, Swift
Điểm: 1700 (p) Thời gian: 1.0s Bộ nhớ: 512M Input: bàn phím Output: màn hình

Có hai bình nước: bình \(A\) có dung tích \(a\) và bình \(B\) có dung tích \(b\). Bạn muốn đong \(x\) đơn vị nước bằng các bình này.

Ban đầu cả hai bình đều rỗng. Ở mỗi bước, bạn có thể đổ đầy một bình, làm rỗng một bình hoặc chuyển nước từ một bình sang bình khác. Khi chuyển nước, bạn luôn phải làm đầy hoặc làm rỗng ít nhất một bình. Sau các bước, bình \(A\) phải có \(x\) đơn vị nước.

Hãy tìm một dãy bước sao cho tổng lượng nước được di chuyển là nhỏ nhất, hoặc cho biết rằng không thể đong được lượng nước đó.

Đầu vào

Dòng duy nhất chứa ba số nguyên \(a\), \(b\)\(x\).

Đầu ra

Đầu tiên in hai số nguyên \(n\)\(m\): số bước và tổng lượng nước được di chuyển. Sau đó in một dãy gồm \(n\) bước. Mỗi bước phải di chuyển ít nhất một đơn vị nước và là một trong các dạng sau:

  • FILL A: đổ đầy bình \(A\)

  • FILL B: đổ đầy bình \(B\)

  • EMPTY A: làm rỗng bình \(A\)

  • EMPTY B: làm rỗng bình \(B\)

  • MOVE A B: chuyển nước từ bình \(A\) sang bình \(B\)

  • MOVE B A: chuyển nước từ bình \(B\) sang bình \(A\)

Nếu không thể đong được lượng nước đó, chỉ in \(-1\).

Constraints

  • \(1 \le a, b, x \le 1000\)

Example

Test 1

Input
5 3 4
Output
6 19
FILL A
MOVE A B
EMPTY B
MOVE A B
FILL A
MOVE A B

Bình luận

Mới nhất
Tải bình luận...

Không có bình luận nào.