Chuyển bi

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: 1600 (p) Thời gian: 2.0s Bộ nhớ: 1G Input: bàn phím Output: màn hình

Có năm hộp đựng bi, hộp thứ \(i\) chứa \(a_i\) viên (\(i = 1, 2, \dots, 5\)). Nhiệm vụ của người chơi là đưa tất cả các viên bi về một hộp với quy tắc chuyển bi như sau: Mỗi bước, chọn ba hộp phân biệt \(i, j, k\), trong đó hộp thứ \(i, j\) đều còn bi, rồi chuyển từ hộp \(i\) sang hộp \(k\) một viên bi, chuyển từ hộp \(j\) sang hộp \(k\) một viên bi.

Yêu cầu

  • Cho \(a_1, a_2, \dots, a_5\) tương ứng là số lượng bi ở năm hộp, hãy tìm cách đưa tất cả các viên bi về một hộp với số bước không vượt quá \(10^6\).
  • Dữ liệu đảm bảo bài toán có cách chuyển thỏa mãn.

Input

  • Gồm một dòng chứa năm số nguyên không âm \(a_1, a_2, a_3, a_4, a_5\). Các số cách nhau một dấu cách.

Output

  • Dòng đầu ghi số \(s\) là số lần chuyển bi (\(s \le 10^6\)).
  • \(s\) dòng sau, mỗi dòng ghi ba số \(i, j, k\) mô tả cho một lần chuyển bi từ hai hộp \(i, j\) sang hộp \(k\).

Example

Test 1

Input
2 1 2 1 0
Output
3
1 3 5
1 3 5
2 4 5
note

Giải thích các bước chuyển trong ví dụ:

  • Ban đầu: (2, 1, 2, 1, 0)
  • Bước 1 (1 3 5): Hộp 1 và 3 giảm 1, hộp 5 tăng 2 \(\to\) (1, 1, 1, 1, 2)
  • Bước 2 (1 3 5): Hộp 1 và 3 giảm 1, hộp 5 tăng 2 \(\to\) (0, 1, 0, 1, 4)
  • Bước 3 (2 4 5): Hộp 2 và 4 giảm 1, hộp 5 tăng 2 \(\to\) (0, 0, 0, 0, 6)
    Kết quả cuối cùng tất cả bi dồn về hộp 5.

Bình luận

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

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