蝈蝈的多线程Ⅲ

TimeLimit:1000MS  MemoryLimit:64MB
64-bit integer IO format:%lld
未提交 | 登录后收藏
Problem Description

众所周知,多线程即并发,就是多个CPU同时运行多个线程来缩短时间和提高效率。每个线程被分为数个时间长度为 1 的时间片,CPU每次运行的不是整个线程,而是线程的一个时间片,同样,运行中间不会停止,直至当前时间片结束。尽管线程被拆分,但是一个线程内时间片的相对运行顺序是不会变的,如果前面的时间片还没有运行,则只会运行前面的时间片。当CPU运行完当前线程的时间片时,CPU可以选择继续运行这个线程的下一个时间片,或者选择另一个线程的时间片。一个线程的完成可以经过多个CPU,即不要求所有时间片都由同一个CPU完成,但是一个线程同一时间最多只能由一个CPU运行。现在有 n 个CPU和 m 个线程,已知每个线程需要的时间,请问完成所有线程需要的最短时间。

Input

第一个两个整数 n 和 m,分别表示CPU的数量和线程的数量(1 ≤ n,m ≤ 100)

第二行 m 个整数 ai,表示第 i 个线程需要的时间(1 ≤ ai ≤ 100)

Output

输出一行一个整数,表示完成所有线程需要的最短时间

SampleInput
2 3
2 2 2
SampleOutput
3

tip:
最开始三个线程进度为(0,0,0)
当t=1时,运行第一个线程和第二个线程的时间片,三个线程进度为(1,1,0)
当t=2时,运行第一个线程和第三个线程的时间片,三个线程进度为(2,1,1)
当t=3时,运行第二个线程和第三个线程的时间片,三个线程进度为(2,2,2)
此时所有线程全部完成,所需时间为3
Submit
题目统计信息详细
总AC数22
通过人数20
尝试人数22
总提交量41
AC率48.78%
AC该题后可以添加标签
贴完标签可以获得20ACB。
并且可以获得本题所有提交代码查看权限。
点击标题可以显示标签。
如果你还没认真思考过这题,请不要查看标签
如果您已经通过了该题,请务为该题贴上标签

T^T Online Judge

[BUG反馈] [FAQ] [闽ICP备17026590号-1]
当前版本:3.24 系统时间: