Trạng thái

Trong siêu thị có \(n(0< n \le 1000)\) đồ vật, đồ vật thứ \(i\) có trọng lượng là \(w[i], 0< w[i] \le 1000\) và giá trị là \(v[i], 0< v[i] \le 1000\)

Một tên trộm đột nhập vào siêu thị, tên trộm mang một cái túi có thể chứa tối đa là \(M(0< M \le 5000)\), tên trộm loay hoay với việc chọn các đồ vật sao cho giá trị lớn nhất mà tổng khối lượng vẫn đảm bảo chiếc balo.

Yêu cầu:

Hãy chọn các vật sao cho đặt vừa trong chiếc túi mà tổng giá trị lớn nhất có thể. Mỗi vật chỉ được chọn đúng 1 lần.

Dữ liệu vào Specification

  • Dòng đầu tiên chứa hai số nguyên dương \(n\)\(M (0 < n \le 10^3, 0< M \le 5000)\).
  • \(n\) dòng tiếp theo mỗi dòng ghi 2 số nguyên \(w_i\)\(v_i\) là trọng lượng và giá trị của đồ vật thứ \(i\).

Dữ liệu ra Specification

  • Ghi ra giá trị lớn nhất của các đồ vật mà tên trộm có thể lấy.

Sample Input

5 15
12 4
2 2
1 1
1 2
4 10

Sample Output

15

Giải thích: chọn các vật 2, 3, 4, 5

Thông tin
Thông tin bài tập
Gửi bài giải
Điểm
100
Giới hạn thời gian:
1.0s
Giới hạn bộ nhớ:
640 M
I/O
stdin -> stdout
Tác giả
Loại đề bài
Quy hoạch động: Cái túi
Ngôn ngữ cho phép
C, C#, C++, Java, Pascal, Python, Text