Chọn số

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

Cho \(n, k\) và dãy \(a_1, a_2, \dots, a_n\). Hãy tìm các cách chọn nhiều phần tử nhất trong dãy \(a\) sao cho có tổng không vượt quá \(k\).

Input

Dữ liệu vào:

  • Dòng đầu tiên chứa hai số nguyên \(n\)\(k\).
  • Dòng thứ hai chứa \(n\) số nguyên phân biệt \(a_1, a_2, \dots, a_n\) (\(a_i \le 10^3, k \le 10^3\)).

Output

Kết quả:

  • Dòng 1: Đưa ra số lượng nhiều nhất các phần tử được chọn.
  • Các dòng tiếp theo, mỗi dòng ghi một cách chọn nhiều nhất các phần tử thỏa mãn.

Example

Test 1

Input
5 6
1 3 2 4 5
Output
3
1 3 2
Note

Các cách có tổng nhỏ hơn hoặc bằng \(6\) thì cách chọn \(\{1, 3, 2\}\) có nhiều phần tử nhất.

Scoring

  • Subtask \(1\) (\(20\%\) số điểm): \(n \le 20\).
  • Subtask \(2\) (\(30\%\) số điểm): \(20 < n \le 100\).
  • Subtask \(3\) (\(50\%\) số điểm): \(100 < n \le 10^3\).

Bình luận

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

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