boolcheck(int x) { ll ans = 0, diff = 0; for (int i = 0; i < N; ++i) ans += (diff = arr[i] - x) <= 0 ? 0 : diff; return ans >= M; }
intmain() { cin >> N >> M; for (int i = 0; i < N; ++i) cin >> arr[i]; int l = 0, r = 1e9; while (l <= r) { int mid = l + (r - l) / 2; if (check(mid)) l = mid + 1; else r = mid - 1; } cout << r; return0; }