[RCOJ Educational Contest #01] Cắt thanh sắt

Xem dạng PDF

Gửi bài giải

Điểm: 800,00 (OI)
Giới hạn thời gian: 1.0s
Giới hạn bộ nhớ: 256M
Input: stdin
Output: stdout

Tác giả:
Dạng bài
Ngôn ngữ cho phép
C, C++, Java, Kotlin, Pascal, PyPy, Python, Scratch

Một thanh sắt có độ dài ~l~ có thể được cắt thành các đoạn nhỏ hơn.

Cho bảng giá gồm ~l~ số nguyên dương ~p_1,p_2,...,p_l~, trong đó ~p_i~ là giá bán của một đoạn sắt có độ dài ~i~.

Bạn có thể cắt hoặc không cắt thanh sắt, và có thể sử dụng lại cùng một độ dài nhiều lần (tức là có thể cắt ra nhiều đoạn cùng độ dài).

Yêu cầu: Hãy xác định cách cắt thanh sắt sao cho tổng giá trị thu được là lớn nhất.

Input

  • Dòng thứ nhất: một số nguyên dương ~l~ (~1 \leq l \leq 10^6~).
  • Dòng thứ hai: gồm ~l~ số nguyên dương ~p_1,p_2,...,p_l~ (~1 \leq p_i \leq l~).

Output

Một số nguyên duy nhất — giá trị thu được lớn nhất khi cắt thanh sắt tối ưu.

Example input 1

5
2 5 7 3 9

Example output 1

12

Note 1

  • Có thể cắt thanh sắt dài 5 thành các đoạn dài 2 và 3, thu được tổng giá ~p_2+p_3 = 5+7=12~, là lớn nhất.

Bình luận

Hãy đọc nội quy trước khi bình luận.


Không có bình luận tại thời điểm này.