#A6020. 流水线加工

流水线加工

题目背景

工厂接到了一批零件订单,一共 n 个零件。每个零件都要先在车床上加工一道,再到铣床上加工一道,两道工序的先后顺序不能颠倒。

第 i 个零件在车床上需要 a_i 分钟,在铣床上需要 b_i 分钟。每台机器同一时刻只能加工一个零件,一个零件在一台机器上一旦开工就要连续做完,不能中断;而且一个零件只有在车床上加工完之后,才能上铣床。

厂长想安排这 n 个零件的加工先后,让所有零件全部加工完的时刻尽可能早。

题目描述

给定 n 个零件在车床、铣床上的加工时间 (a_i, b_i),每个零件必须先经过车床、再经过铣床,同一台机器同一时刻最多加工一个零件。求所有零件全部完工的最早时刻(从时刻 0 开始计时)。输出这个最早的总时间。

输入格式

第一行一个整数 n。

接下来 n 行,每行两个整数 a, b,表示一个零件在车床、铣床上的加工时间。

输出格式

一个整数,表示所有零件全部完工的最早总时间。

输入输出样例

4
3 6
5 2
8 4
4 7
22

样例 1 解释

一个最优的安排是依次加工 (3,6)、(4,7)、(8,4)、(5,2):车床分别在时刻 3、7、15、20 完成这四件;铣床分别在时刻 9、16、20、22 完成,所以全部完工的最早时刻是 22。其他安排都达不到这么早。

说明/提示

- 1 ≤ n ≤ 10^5 - 1 ≤ a_i, b_i ≤ 10^9 - 同一台机器同一时刻只能加工一个零件 - 每个零件必须先在车床加工完,才能上铣床 - 答案可能很大,注意使用合适的数据类型