题目链接如上。代码如下:
#include <cstdio>
#include <vector>
#include <algorithm>
struct task{
int brief;
int job;
};
int n, nbr;
std::vector<task> vec;
bool cmp(const task &a, const task &b){
return a.job > b.job;
}
int main(){
nbr = 1;
while(scanf("%d", &n) == 1 && n){
vec.resize(n);
for(int i = 0; i < n; ++i){
scanf("%d %d", &vec[i].brief, &vec[i].job);
}
sort(vec.begin(), vec.end(), cmp);
int ans = 0;
int temp = 0;
for(int i = 0; i < n; ++i){
temp += vec[i].brief;
if(temp + vec[i].job > ans){
ans = temp + vec[i].job;
}
}
printf("Case %d: %d\n", nbr, ans);
++nbr;
}
return 0;
}