题目大意
有 n n n 个巨人,第 i i i 个巨人肩膀与头顶距离地面的高度分别是 a i a_i ai 和 b i b_i bi。
现在需要你把这 n n n 个巨人堆叠在一起(上面的巨人踩着下面的巨人的肩膀),求这 n n n 个巨人最多能堆叠多高。
思路
我们可以发现,这 n n n 个巨人堆叠在一起时,无论是怎样的顺序,最上面的巨人的肩膀距离地面的高度总是固定不变的,所以想要总高度最高,就需要最上面的人的头的高度最大,所以我们只需要算出每个巨人的肩膀与地面之间的高度之和以及所有巨人中头的高度最高的高度,再把它们相加即可。
code
#include<iostream>
#define ll long long
using namespace std;
int main() {
ios::sync_with_stdio(false),cin.tie(0),cout.tie(0);
ll n,a,b,ans=0,ma=0;
cin>>n;
for(int i=0;i<n;++i) {
cin>>a>>b;
ans+=a;
ma=max(ma,b-a);
}
cout<<ans+ma;
return 0;
}