有N个任务需要执行,第i个任务计算时占R[i]个空间,而后会释放一部分,最后储存计算结果需要占据O[i]个空间(O[i] < R[i])。
例如:执行需要5个空间,最后储存需要2个空间。给出N个任务执行和存储所需的空间,问执行所有任务最少需要多少空间。
输入
第1行:1个数N,表示任务的数量。(2 <= N <= 100000)
第2 - N + 1行:每行2个数R[i]和O[i],分别为执行所需的空间和存储所需的空间。(1 <= O[i] < R[i] <= 10000)
输出
输出执行所有任务所需要的最少空间。
输入样例
20
14 1
2 1
11 3
20 4
7 5
6 5
20 7
19 8
9 4
20 10
18 11
12 6
13 12
14 9
15 2
16 15
17 15
19 13
20 2
20 1
输出样例
135
听说数据很水,我也不确定我的思路是不是真的正确
答案为所有o[i]的和加上r[i]-o[i]的最小值 和 所有r[i]最大值 的最大值
#include<bits/stdc++.h>
using namespace std;
#define ll long long
struct node{
ll r,o;
}a[100100];
int main()
{
ios::sync_with_stdio(false);
int n;
ll maxn=0,tmp=0,ans=0,minn=0x3f3f3f3f;
cin>>n;
for(int i=1;i<=n;i++)
{
cin>>a[i].r>>a[i].o;
ans+=a[i].o;
minn=min(minn,a[i].r-a[i].o);
maxn=max(maxn,a[i].r);
}
cout<<max(maxn,ans+minn);
return 0;
}