题目描述
在一次算法比赛中,有 n 个程序提交到了竞赛平台上,测试每个程序需要两步:先编译,然后运行。
竞赛平台有两台服务器,一台只负责编译,另一台只负责运行,编译第 i 个程序的时间为 ai,运行第 i 个程序的时间为 bi。服务器必须按照提交顺序来处理任务,也就是说一定要先处理第一个程序,最后处理第 n 个程序。每台服务器在同一时刻只能处理一个任务。
请问平台需要多少时间才能测试完所有的程序?
输入格式
第一行:单个正整数 n;
第二行到第 n+1 行:在第 i+1 行,有两个整数 ai 与 bi。
输出格式
单个整数:表示按照次序测试完所有程序的时间。
数据范围
- 对于 50%50% 的数据,1≤n≤1000;
- 对于 100%100% 的数据,1≤n≤200000,1≤ai,bi≤10000。
样例数据
输入:
3
10 5
20 30
5 50
输出:
110
说明:
0时: 开始
10时: 程序1编译完成
15时: 程序1运行完成
30时: 程序2编译完成
35时: 程序3编译完成
60时: 程序2运行完成
110时: 程序3运行完成
题解
本题关键点:这次程序的编译时间和上一个程序的总耗时,比较大小。代码如下。
#include <iostream>
using namespace std;
int main(){int n,begin,end;cin>>n;int a[n];int b[n];for(int i=0;i<n;i++){cin>>a[i]>>b[i];}begin=0;end=0;for(int j=0;j<n;j++){begin=a[j]+begin;end=max(begin,end)+b[j];}end=max(begin,end);cout<<end<<endl;return 0;
}