Phân vùng tre

Đề bài

Mô tả

n cây tre trồng thành một hàng. Ngay lúc trồng, mọi cây đều cao 0 mét và mỗi ngày mỗi cây cao thêm 1 mét. Cây thứ i cần đạt chiều cao mong muốn là ai mét.

Ta có thể cắt mỗi cây đúng một lần, tại một độ cao không vượt quá chiều cao hiện tại của nó; sau khi bị cắt, cây ngừng cao thêm.

Việc kiểm tra và cắt chỉ được thực hiện sau mỗi d ngày: tức là sau d ngày, 2d ngày, 3d ngày, … Vào mỗi lần kiểm tra, ta cắt những cây đã đạt hoặc vượt chiều cao mong muốn, cắt đúng tại độ cao mong muốn ai. Nói cách khác, cây i bị cắt vào lần kiểm tra sớm nhất mà chiều cao của nó ai; khi đó phần thừa phải bỏ đi có độ dài bằng (chiều cao lúc cắt) ai.

Hãy tìm giá trị d lớn nhất sao cho tổng độ dài các phần tre bị cắt bỏ không vượt quá k mét.

Dữ liệu vào

  • Dòng đầu chứa hai số nguyên nk — số cây tre và tổng độ dài tối đa cho phép của các phần cắt bỏ.
  • Dòng thứ hai chứa n số nguyên a1,a2,,an — chiều cao mong muốn của từng cây.

Dữ liệu ra

In ra một số nguyên duy nhất — giá trị lớn nhất của d.

Ràng buộc

  • 1n100
  • 1k1011
  • 1ai109

Ví dụ

Input Output Giải thích
3 4
1 3 5
3 Với d=3: cây cao 13 bị cắt sau 3 ngày (khi cao 3), phần bỏ 2+0=2; cây cao 5 bị cắt sau 6 ngày (khi cao 6), phần bỏ 1. Tổng =34. Không có d lớn hơn thoả mãn.
3 40
10 30 50
32 Với d=32, các mốc kiểm tra là 32,64, Tổng phần cắt bỏ vẫn không vượt quá 40.

Bình luận

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

gnatmake 12.2.0 a68g 3.1.2 nasm 2.16.1 as_x64 2.46 awk 1.3.4 gcc 16.1.0 csc 6.12.0.200 g++ 16.1.0 g++-themis 16.1.0 g++17 16.1.0 g++20 16.1.0 g++23 16.1.0 clang++ 22.1.6 dmd 2.112.0 dart 3.12.1 gforth 0.7.3 gfortran 12.2.0 go 1.26.3 groovyc 5.0.6 javac 25.0.3 node 26.2.0 kotlinc 2.3.21 sbcl 2.2.9 lua 5.4.8 nim 2.2.10 fpc 3.2.2 fpc-themis 3.2.2 perl 5.36.0 php 8.5.6 pike 8.0 pypy3 7.3.23 python3 3.14.5 racket 8.7 ruby 4.0.5 rustc 1.96.0 csc 5.3.0 ctoj-scratch 0.0.1 sed 4.9 tclsh 8.6 bun 1.3.14 deno 2.8.1 v 0.5.1 zig 0.16.0