思路:要时间最短,即要求尽量多的任务同时进行,则把执行时间由大到小排序即可。
#include <iostream>
#include <map>
#include <deque>
#include <queue>
#include <stack>
#include <string>
#include <cstring>
#include <cstdio>
#include <cmath>
#include <algorithm>
#include <map>
#include <set>
using namespace std;
struct abc
{
int b,j;
}a[1005];
bool cmp(abc x,abc y)
{
return x.j>y.j;
}
int main()
{
int n,k=1;
while(scanf("%d",&n)&&n)
{
int i,sum,max;
for(i=0;i<n;i++)
cin>>a[i].b>>a[i].j;
sort(a,a+n,cmp);
sum=max=a[0].b+a[0].j;
for(i=1;i<n;i++)
{
a[i].b+=a[i-1].b;
sum=a[i].b+a[i].j;
if(max<sum) max=sum;
}
printf("Case %d: %d\n",k++,max);
}
return 0;
}