#270. Bài tập về nhà (HOMEWORK)

Bộ nhớ: 512 MiB Thời gian: 1000 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

Vào ngày đầu tiên đi học, giáo viên đã giao tất cả bài tập về nhà. Mỗi bài tập chỉ được tính điểm (tín chỉ) nếu nộp trong thời hạn quy định. Thời hạn hoàn thành và điểm số của mỗi bài tập có thể khác nhau. Ví dụ, nếu một bài tập có điểm là 10 và yêu cầu nộp trong vòng 6 ngày, thì để nhận được 10 điểm này, bạn phải nộp trước khi kết thúc ngày thứ 6 .

Thời gian hoàn thành mỗi bài tập đều là 1 ngày. Ví dụ, giả sử có 7 bài tập với điểm số và thời hạn như sau:

Mã bài tập Thời hạn Điểm
1 1 6
2 7
3 3 2
4 1
5 2 4
6 5
7 6 1

Số điểm tối đa có thể đạt được là 15 . Một trong những thứ tự hoàn thành bài tập là 2,6,3,1,7,5,4 (lưu ý có thể có cách khác).

Nhiệm vụ của bạn là tìm ra một thứ tự làm bài tập để đạt được tổng điểm lớn nhất.

Dữ liệu:

  • Dòng đầu tiên chứa một số nguyên N , biểu thị số lượng bài tập.
  • N dòng tiếp theo, mỗi dòng gồm hai số nguyên: số đầu tiên là thời hạn hoàn thành, số thứ hai là điểm số của bài tập đó.

Kết quả:

  • Xuất ra một số nguyên biểu thị tổng điểm lớn nhất có thể đạt được. Đảm bảo đáp án không vượt quá phạm vi int của C/C++.

Ví dụ:

Dữ liệu:

7
1 6
1 7
3 2
3 1
2 4
2 5
6 1

Kết quả:

15

Giới hạn:

  • Đối với 20\% dữ liệu, N \leq 10^3 .
  • Đối với 40\% dữ liệu, N \leq 10^4 .
  • Đối với 60\% dữ liệu, N \leq 10^5 .
  • Đối với 100\% dữ liệu, N \leq 10^6 , thời hạn hoàn thành các bài tập đều nhỏ hơn 7\times 10^5 .