不知道今天咋地了,UVa需要翻出去看。
http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=2829
学了一招:把"<"符号重载成">"符号可以降序排列。证明就很水了,有点类似活动选择问题的思想。
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
typedef struct aaa
{
int b;
int j;
}s;
bool operator < (const s &a, const s &b)
{
return a.j > b.j;
}
int main()
{
int n;
int count_of_case = 1;
while(cin>>n && n)
{
vector<s> a;
while(n--)
{
s temp;
cin>>temp.b>>temp.j;
a.push_back(temp);
}
sort(a.begin(),a.end());
int ss = 0;
int ans = 0;
for(vector<s>::iterator it = a.begin(); it != a.end(); ++it)
{
ss += ((*it).b);
ans = max(ans, ss + ((*it).j));
}
cout<<"Case "<<count_of_case++<<": "<<ans<<endl;
}
}