Background

这道题不可能有低于 O(n2logn)\operatorname{O}(n^{2}\log n) 的做法。——匿名用户 1

O(1)\operatorname{O}(1) 秒了!——匿名用户 2

Description

兹有 nn 堆石子,第 ii 堆石子有 aia_{i} 个,定义一次操作为:

  • 任选 kk 堆石子,从每堆石子中各拿走 11 个,即置 aiai1a_{i}\leftarrow a_{i}-1

最大化操作次数。

Input

第一行两个整数 n,kn,k,第二行 nn 个整数,第 ii 个整数表示 aia_{i}

1
2
3 2
1 2 3

Output

一个整数,表示答案。

1
3

Hint

对于 100%100\% 的数据,1kn5×1051 \leqslant k \leqslant n \leqslant 5 \times 10^{5}0ai5×1050 \leqslant a_{i} \leqslant 5 \times 10^{5},且 ai109\sum a_{i} \leqslant 10^{9}

Notes

二分答案,考虑能否进行 xx 次操作。

由于每堆石子只能取 xx 次,置 aimin{ai,x}a_{i}\leftarrow \min\lbrace a_{i},x \rbrace,如果剩下的石子总数 kx\geqslant kx,则一定可行。

具体的操作方案是,将不足 xx 个石子的堆用另一堆补为 xx 个,最终将补成 kk 堆,每堆有 xx 个石子,每次每堆拿一个即可。

直接在线段树上二分,时间复杂度优化为 Θ(nlogn)\Theta(n\log n)