题目链接:Gym-102299 I 题意:玩家拿一个x值,可以选择支付y值退出,也可以选择不支付继续向下,但当到最后一个时,必须支付y值退出。问在最小的利益排序下,玩家能赚到的最大利益! #include <iostream> #include <bits/stdc++.h> const long long int minn=-1e9-1; typedef long long ll; using namespace std; struct node { ll l,r; } a[100002]; bool mp(node a, node b) { return a.r<b.r; } int main() { int n; cin>>n; for(int i=0; i<n; i++) cin>>a[i].l>>a[i].r; sort(a,a+n,mp); ll maxx=minn; ll sum=0; int i; for( i=0; i<n; i++) { sum+=a[i].l; maxx=max(maxx,sum-a[i].r); } maxx=max(maxx,sum-a[n-1].r); cout<<maxx<<endl; return 0; }