Dãy số (HSG9 Đà Nẵng 2026)

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: 1200 Thời gian: 1.0s Bộ nhớ: 256M Input: bàn phím Output: màn hình

Cho dãy số nguyên dương \(a_1, a_2, \dots, a_n\). Mỗi thao tác bạn được phép chọn một phần tử bất kỳ trong dãy để tăng lên \(1\) đơn vị.

Yêu cầu: Thực hiện \(m\) thao tác để phần tử nhỏ nhất của dãy (sau khi thực hiện \(m\) thao tác) nhận giá trị lớn nhất.

Input

  • Dòng đầu tiên gồm hai số nguyên \(n\)\(m\) (\(1 \le n \le 2 \cdot 10^5\); \(0 \le m \le 10^9\)) lần lượt là số lượng phần tử của dãy và số thao tác thực hiện.
  • Dòng thứ hai gồm \(n\) số nguyên \(a_1, a_2, \dots, a_n\) (\(1 \le a_i \le 10^9\)) là giá trị ban đầu của các phần tử.

Output

  • Ghi ra một số nguyên duy nhất là giá trị nhỏ nhất của dãy số lớn nhất có thể đạt được sau khi thực hiện \(m\) thao tác.

Example

Test 1

Input
5 6
2 8 6 5 9
Output
6
Note

Ban đầu dãy là \([2, 8, 6, 5, 9]\). Ta có \(6\) thao tác.

  • Tăng phần tử \(2\) lên \(4\) lần \(\rightarrow\) thành \(6\) (dùng \(4\) thao tác).
  • Tăng phần tử \(5\) lên \(1\) lần \(\rightarrow\) thành \(6\) (dùng \(1\) thao tác).
  • Tăng phần tử \(6\) lên \(1\) lần \(\rightarrow\) thành \(7\) (dùng \(1\) thao tác).

Dãy trở thành \([6, 8, 7, 6, 9]\), giá trị nhỏ nhất của dãy là \(6\). Đây là giá trị nhỏ nhất lớn nhất có thể đạt được.

Scoring

  • Subtask \(1\) (\(20\%\) số điểm): \(n \le 10^5\)\(m \le 1\).
  • Subtask \(2\) (\(20\%\) số điểm): \(n = 2\)\(m \le 10^2\).
  • Subtask \(3\) (\(30\%\) số điểm): \(n \le 10^3\)\(m \le 10^2\).
  • Subtask \(4\) (\(30\%\) số điểm): Không có ràng buộc gì thêm.

Bình luận (1)

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