Điều hướng chính

Ngôn ngữ

Phím tắt

/
Chuyển đến ô tìm bài
g p
Đi đến bài tập
g c
Đi đến kỳ thi
g u
Đi đến người dùng
?
Mở trợ giúp phím tắt

Liệt kê biểu thức cộng trừ

Dễ Duyệt Đệ quy quay lui

  • 100 Điểm
  • 100% Tỉ lệ AC
  • 1 Số AC
  • 500M Bộ nhớ giới hạn
  • 1.0s Giới hạn thời gian

Cho dãy \(n\) số nguyên \(A_1, A_2, \dots, A_n\) và một số nguyên \(M\). Giữ nguyên thứ tự các số, ta chèn vào mỗi trong \(n-1\) khoảng giữa hai số liên tiếp một trong hai dấu + hoặc -, được một biểu thức. Ví dụ với dãy \([3, 4, 5]\) ta có thể tạo ra \(3+4-5\), giá trị bằng \(2\).

Hãy liệt kê tất cả các biểu thức có giá trị đúng bằng \(M\).

Cách in biểu thức. Số đầu tiên được in nguyên dạng \(A_1\) (kèm dấu - nếu âm). Với \(i \ge 2\), ta in dấu hiệu dụng rồi đến giá trị tuyệt đối \(|A_i|\), trong đó dấu hiệu dụng là dấu mà \(|A_i|\) thực sự đóng góp vào tổng: nếu chèn + trước \(A_i\) thì dấu hiệu dụng là dấu của \(A_i\), nếu chèn - thì là dấu ngược lại (khi \(A_i = 0\) thì lấy đúng dấu được chèn). Chẳng hạn với dãy \([2, -3, 0]\), việc chèn - trước \(-3\) được in là +3, và hai cách chèn dấu trước số \(0\) cho hai biểu thức khác nhau 2+3+0 và 2+3-0. Nhờ vậy các biểu thức không có khoảng trắng và mỗi cách chèn dấu cho ra đúng một dòng.

Input

  • Dòng đầu gồm hai số nguyên \(n\) và \(M\).
  • Dòng thứ hai gồm \(n\) số nguyên \(A_1, \dots, A_n\).

Output

In mỗi biểu thức thỏa mãn trên một dòng, theo thứ tự từ điển tăng dần của xâu ký tự (theo mã ASCII, tức + đứng trước -). Nếu không có biểu thức nào thì không in gì.

Constraints

  • \(1 \le n \le 21\), \(|M| \le 2 \cdot 10^9\)
  • \(|A_i| \le 10^9\)

Sample Input 1

4 4
6 3 -2 1

Sample Output 1

6-3+2-1

Sample Input 2

4 6
3 -2 0 5

Sample Output 2

3-2+0+5
3-2-0+5

Explanation

Ở ví dụ 2, chèn + trước \(-2\) (đóng góp \(-2\)), rồi +0 hoặc -0 (đóng góp \(0\)), rồi + trước \(5\): giá trị \(3-2+0+5 = 6\). Hai cách chèn dấu khác nhau ở số \(0\) nên có hai dòng.

Bình luận

Chưa có bình luận nào.