CSES - Replace with Difference | Thay Bằng Hiệu

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: 1800 (p) Thời gian: 1.0s Bộ nhớ: 512M Input: bàn phím Output: màn hình

Bạn được cho một mảng gồm \(n\) số nguyên. Bạn sẽ thực hiện \(n-1\) thao tác trên mảng.

Trong một thao tác, bạn chọn hai số \(a\)\(b\) từ mảng, xóa cả hai số đó khỏi mảng và thêm \(|a - b|\) vào mảng.

Nhiệm vụ của bạn là tìm một dãy thao tác sao cho số cuối cùng còn lại trong mảng là \(0\).

Dữ liệu vào

Dòng đầu tiên chứa một số nguyên \(n\): độ dài của mảng.

Dòng tiếp theo chứa \(n\) số nguyên \(x_1, x_2,\dots, x_n\): các phần tử của mảng.

Dữ liệu ra

In ra \(n-1\) dòng, mỗi dòng chứa hai số nguyên \(a\)\(b\): các số được chọn trong các thao tác. Bạn có thể in ra bất kỳ lời giải hợp lệ nào.

Nếu không tồn tại lời giải, chỉ in \(-1\).

Constraints

  • \(2 \le n \le 1000\)

  • \(1 \le x_i \le 1000\)

Example

Test 1

Input
5
2 7 4 12 1
Output
2 12
7 10
4 1
3 3

Explanation

Mảng thay đổi như sau:

  • \([2, 7, 4, 12, 1] \rightarrow\) xóa \(2\)\(12\), thêm \(10\)

  • \([7, 4, 1, 10] \rightarrow\) xóa \(7\)\(10\), thêm \(3\)

  • \([4, 1, 3] \rightarrow\) xóa \(4\)\(1\), thêm \(3\)

  • \([3, 3] \rightarrow\) xóa \(3\)\(3\), thêm \(0\)

  • \([0]\): mảng cuối cùng

Bình luận

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

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