CF551C GukiZ hates Boxes

题目描述

GukiZ 教授为赶去学校而苦恼,因为有大量纸箱堆挡住了他的路。 总共有 $n$ 堆纸箱,从左到右排成一排,第 $i$ 堆($1 \leq i \leq n$)有 $a_i$ 个纸箱。幸运的是,有 $m$ 个学生愿意帮 GukiZ 搬走所有的纸箱。同学们将同时工作。初始时刻($0$ 秒),所有学生都在第一堆纸箱的左侧。每个学生需要 $1$ 秒才能从这个位置移动到第一堆纸箱前,然后必须开始执行两个可能的操作,每个操作均需 $1$ 秒完成。可以进行的操作为: 1. 如果当前位置 $i \neq n$,则从第 $i$ 堆移动到第 $i+1$ 堆; 2. 如果学生当前所在的堆还有纸箱,则移走一个纸箱。 GukiZ 的学生们一点都不聪明,所以他们需要你帮助他们安排搬箱子的顺序,以确保教授到来之前路彻底畅通(教授非常没耐心,不想等待)。他们请你计算需要多少最少的秒数 $t$ 才能搬空全部纸箱。注意,$t$ 秒结束时学生们可以处于任意位置,但所有纸箱必须已经被搬走。

输入格式

第一行包含两个整数 $n$ 和 $m$($1 \leq n, m \leq 10^5$),分别表示纸箱堆的数量和 GukiZ 的学生人数。 第二行包含 $n$ 个整数 $a_1, a_2, \ldots, a_n$($0 \leq a_i \leq 10^9$),其中 $a_i$ 表示第 $i$ 堆的纸箱数量。保证至少有一堆纸箱不为空。

输出格式

输出一行一个整数,表示搬空所有纸箱所需的最少时间(秒数)。

说明/提示

样例 1:学生先移动到第一堆($1$ 秒),然后移走第一堆的一个纸箱($1$ 秒),再移动到第二堆($1$ 秒),最后移走第二堆的一个纸箱($1$ 秒)。 样例 2:一种最优方案是:一个学生移走第一堆和第三堆的各一个纸箱,另一个学生移走第三堆的一个纸箱。总共需要 $5$ 秒。 样例 3:学生人数充足,可以派三人搬走第一堆,四人搬走第二堆,五人搬走第三堆,四人搬走第四堆。整个过程在 $5$ 秒内完成,当最后一堆纸箱搬空时结束。 由 ChatGPT 5 翻译