QOJ.ac

QOJ

実行時間制限: 1.0 s メモリ制限: 32 MB 満点: 120

#16634. AERODROM

統計

由 $M$ 个人组成的克罗地亚代表团正准备前往澳大利亚参加 IOI 2013。他们目前正在机场排队办理登机手续。机场共有 $N$ 个开放的登机手续办理柜台。由于不同工作人员的工作效率不同,各个柜台的办理速度也有所不同。在第 $k$ 个柜台,办理一位旅客的登机手续需要 $T_k$ 秒。代表团成员恰好知道这些精确的时间。

最开始,所有柜台都准备好接待下一位旅客,且队列中只有代表团的成员。只有当队列中排在某个人前面的所有人都已经离开队列(即已经开始办理,但不一定完成办理)时,这个人才能占用(开始在)一个空闲的柜台。在那个时刻,这个人可以立即占用一个空闲的柜台(如果有的话),也可以选择等待另一个(更快的)柜台变得可用。作为计算机科学的热爱者,代表团成员们会做出决策,使得所有人全部完成登机手续的时刻尽可能早。你的任务是求出这个最早的时刻。

让我们以第一个样例为例来解释这个过程。有两个柜台,处理时间分别为 $7$ 秒和 $10$ 秒。在代表团的 $6$ 个人中,前两个人立即占用了这两个柜台。在时刻 $7$,第一个柜台空闲出来,第三个人占用了它。在时刻 $10$,第四个人占用了第二个柜台。在时刻 $14$,第五个人占用了第一个柜台。在时刻 $20$,第二个柜台再次空闲,但第六个人决定再等一秒(到时刻 $21$)以等待第一个柜台空闲并占用它。这样,所有人的登机手续在时刻 $28$ 全部完成。如果第六个人没有等待更快的柜台,那么办理完所有手续总共需要 $30$ 秒。

输入格式

输入的第一行包含两个正整数 $N$($1 \le N \le 100\,000$),表示柜台的数量,和 $M$($1 \le M \le 1\,000\,000\,000$),表示代表团的人数。

接下来的 $N$ 行,每行包含一个整数 $T_k$($1 \le T_k \le 10^9$),表示题目描述中第 $k$ 个柜台的办理时间。

输出格式

输出的第一行也是唯一的一行,包含所需的最小时间(以秒为单位)。

子任务

在占总分 $75$ 分的测试数据中,数量 $M$ 将最多为 $300\,000$。

样例

输入样例 1

2 6
7
10

输出样例 1

28

输入样例 2

7 10
3
8
3
6
9
2
4

输出样例 2

8

Discussions

About Discussions

The discussion section is only for posting: General Discussions (problem-solving strategies, alternative approaches), and Off-topic conversations.

This is NOT for reporting issues! If you want to report bugs or errors, please use the Issues section below.

Open Discussions 0
No discussions in this category.

Issues

About Issues

If you find any issues with the problem (statement, scoring, time/memory limits, test cases, etc.), you may submit an issue here. A problem moderator will review your issue.

Guidelines:

  1. This is not a place to publish discussions, editorials, or requests to debug your code. Issues are only visible to you and problem moderators.
  2. Do not submit duplicated issues.
  3. Issues must be filed in English or Chinese only.
Active Issues 0
No issues in this category.
Closed/Resolved Issues 0
No issues in this category.