贪心算法排序,最后加上长度
#include <iostream> #include <cstdio> #include <algorithm> using namespace std; struct T{ int b,j; friend bool operator<(const T& p, const T& q){ return p.j > q.j; } }arr[1010]; int main(int argc, char const *argv[]) { int n,cnt = 0; while(cin >> n && n){ for(int i = 0; i < n; i++) cin >> arr[i].b >> arr[i].j; sort(arr,arr+n); int tmp = 0, mx = 0; for(int i = 0; i < n; i++){ tmp += arr[i].b; mx = max(mx,arr[i].j + tmp); } printf("Case %d: %d\n", ++cnt,mx); } return 0; }