#include #include #include #define ALL(V) std::begin(V), std::end(V) using ll = long long; ll ceil_div(ll a, ll b) { return a / b + !!(a % b); } int main() { ll N, K; std::cin >> N >> K; std::vector A(N); for (auto &e : A) std::cin >> e; ll ok = 0, ng = 1e16; while (1 < std::abs(ok - ng)) { ll mid = (ok + ng) / 2; ll sum = 0, cnt = 0; for (ll i = 1; i <= N; i++) { ll e = A[i - 1]; if (mid <= e + sum) continue; ll use = ceil_div(mid - (e + sum), i); sum += use * i; cnt += use; } (cnt <= K ? ok : ng) = mid; } std::cout << ok << std::endl; return 0; }