#893. WISEQ - Dãy con tăng trọng số

Bộ nhớ: 256 MiB Thời gian: 500 ms Nhập/xuất từ luồng chuẩn
Kiểu bài: Thông thường Kiểu chấm: So sánh văn bản
Đưa lên bởi: Trùm CUỐI

Đề bài

Xét dãy số nguyên dương 𝑎_1, 𝑎_2, … , 𝑎_𝑛\ (1 ≤ 𝑎_𝑖 ≤ 𝑛) . Một dãy chỉ số 1 ≤ 𝑖_1 < 𝑖_2 < ⋯ < 𝑖_𝑘 ≤ 𝑛 𝑎_{𝑖_1} < 𝑎_{𝑖_2} < ⋯ < 𝑎_{𝑖_𝑘} thì dãy 𝑎_{𝑖_1} , 𝑎_{𝑖_2} , … , 𝑎_{𝑖_𝑘} được gọi là một dãy con tăng của dãy 𝑎_1, 𝑎_2, …, 𝑎_𝑛 với độ dài của dãy là 𝑘 và tổng 𝑎_{𝑖_1} , 𝑎_{𝑖_2} , … , 𝑎_{𝑖_𝑘} được gọi là trọng số của dãy con tăng.

Yêu cầu: Cho dãy số nguyên dương 𝑎_1, 𝑎_2, …, 𝑎_𝑛 và số nguyên dương 𝑊 , hãy tìm dãy con tăng của dãy 𝑎_1, 𝑎_2, …, 𝑎_𝑛 có độ dài lớn nhất và trọng số không vượt quá 𝑊 .

Dữ liệu:

  • Dòng đầu chứa hai số nguyên dương 𝑛, 𝑊\ (𝑛 ≤ 50000) ;
  • Dòng thứ hai gồm 𝑛 số nguyên dương 𝑎_1, 𝑎_2, … , 𝑎_𝑛\ (1 ≤ 𝑎_𝑖 ≤ 𝑛) .

Kết quả:

  • Đưa ra một dòng chứa một số nguyên là độ dài dãy con tăng lớn nhất tìm được thỏa mãn yêu cầu.

Ví dụ:

Dữ liệu:

5 10
4 2 3 1 5

Kết quả:

3

Dữ liệu:

5 5
4 2 3 1 5

Kết quả:

2

Giới hạn:

Đặt 𝑆 = 𝑎_1 + 𝑎_2 + ⋯ + 𝑎_𝑛

  • Subtask \#1: 𝑛 ≤ 20; 𝑊 ≤ 𝑆 ;
  • Subtask \#2: 𝑛 ≤ 50; 𝑊 = 𝑆 ;
  • Subtask \#3: 𝑛 ≤ 50; 𝑊 ≤ 𝑆 ;
  • Subtask \#4: 𝑛 ≤ 500; 𝑊 ≤ 𝑆 ;
  • Subtask \#5: 𝑛 ≤ 50000; 𝑊 = 𝑆 ;