Chiến Lược Thu Thập Năng Lượng

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: 0.1s Bộ nhớ: 256M Input: bàn phím Output: màn hình

Note: Bài này đã tạo khá lâu rồi.
ledinhbaonam tiếp tục tiến vào khu vực huấn luyện chiến thuật của LQDOJ.

Tại đây, PhuocThien thiết lập một hệ thống thu thập năng lượng gồm \(n\) nguồn năng lượng được xếp theo một hàng thẳng.
Mỗi nguồn thứ \(i\) có giá trị năng lượng \(a_i\).

Theo ghi chép của PhuocThien, hệ thống hoạt động theo cơ chế phân nhóm rất đặc biệt:

  • Các nguồn năng lượng phải được chia thành một số nhóm liên tiếp (mỗi nhóm là một đoạn liên tiếp trong dãy)
  • Mỗi nhóm chỉ được kích hoạt nếu tổng năng lượng của nhóm không vượt quá \(k\)
  • Mỗi nguồn năng lượng chỉ được sử dụng đúng một lần

Mỗi nhóm được kích hoạt sẽ tạo ra một “đơn vị chiến công” tương ứng với số phần tử trong nhóm đó.

Yêu cầu

Hãy giúp ledinhbaonam xây dựng cách chia các nhóm sao cho:

  • Tổng số đơn vị chiến công thu được là lớn nhất có thể.

Input

  • Dòng đầu chứa hai số nguyên \(n, k\) (\(1 \le n \le 2 \cdot 10^5\), \(1 \le k \le 10^{18}\))
  • Dòng thứ hai chứa \(n\) số nguyên \(a_1, a_2, \dots, a_n\) (\(1 \le a_n \le 10^9\))

Output

  • In ra tổng số đơn vị chiến công lớn nhất có thể đạt được.

Example

Test 1

Input
7 10
2 3 5 4 1 2 3
Output
7
Note

Một cách chia tối ưu:

  • \([2,3,5]\)
  • \([4,1,2,3]\)

Tổng số phần tử được chọn là \(7\).

Bình luận

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

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