#include #include int main() { int n, k; std::cin >> n >> k; std::vector a(n); for (int i = 0; i < n; i++) { std::cin >> a[i]; } auto check = [&](long long key) -> bool { long long sum = 0; long long count = 0; for (int i = 0; i < n; i++) { if (a[i] + sum < key) { long long temp = (key - (sum + a[i]) + i) / (i + 1); sum += temp * (i + 1); count += temp; } if (count > k) { return false; } } return true; }; long long ok = 0; long long ng = 1e15; while (ng - ok > 1) { long long key = (ok + ng) / 2; if (check(key)) { ok = key; } else { ng = key; } } std::cout << ok << '\n'; }