众所周知,多线程即并发,就是多个CPU同时运行多个线程来缩短时间和提高效率。为了简化题目,我们取消时间片的概念,即CPU每次都是运行一整个线程,中间不会停止,直至线程结束。每个线程都有个优先级数值,数值越小优先级越高。当同时存在多个线程时,CPU会优先运行优先级最高的。现在有 2 个CPU和 n 个线程,已知每个线程需要的时间和优先级数值,保证所有优先级数值都不同,请问两个CPU联合连续工作完成所有线程需要的时间。
注:可以证明,当两个CPU同时空闲时,两个CPU选择的先后顺序不会影响答案
第一行一个整数 n,表示线程的数量(1 ≤ n ≤ 1000)
接下来 n 行,每行两个整数 ai 和 bi,分别表示第 i 个线程的所需时间和优先级数值(1 ≤ ai,bi ≤ 1e9)
保证所有 bi 各不相同
输出一行一个整数,表示完成所有线程需要的时间
4 3 1 4 10 1 2 3 5
7 tip: 最开始时间t=0 1、当t=0时: 第一个CPU运行优先级为1的线程,所需时间为3,开始时间t=0,结束时间t=3 第二个CPU运行优先级为2的线程,所需时间为1,开始时间t=0,结束时间t=1 2、当t=1时: 第一个CPU还在工作 第二个CPU结束线程,选择下一个优先级为5的线程,所需时间为3,开始时间t=1,结束时间t=4 3、当t=3时: 第一个CPU结束线程,选择下一个优先级为10的线程,所需时间为4,开始时间t=3,结束时间t=7 第二个CPU还在工作 4、当t=4时: 第一个CPU还在工作 第二个CPU结束线程,因为当前已经没有线程了,所以等待 5、当t=7时: 第一个CPU结束线程,因为当前已经没有线程了,所以等待 第二个CPU继续等待 此时所有线程全部完成,所需时间为7