#include<cstdio>
#include <algorithm>
using namespace std;
const int MAX_N=1000+5;
//任务结构体
typedef struct tk
{
int b;//交代任务的时间
int j;//执行任务的时间
}task;
//定义结构体比较函数,规定按照执行任务所花时间从大到小进行排序
bool compare(task A,task B)
{
return A.j>B.j;
}
//根据指定的起始位置来求结构体数组中从此位置开始向后的所有元素的和
int sum_b(task *t,int i,int length)
{
int sum=0;
for(;i<length;i++)
sum+=t[i].b;
return sum;
}
int main()
{
task t[MAX_N];
int N,Case=1;
while(scanf("%d",&N)==1&&N)
{
int book=0;
for(int i=0;i<N;i++)
scanf("%d%d",&t[i].b,&t[i].j);
sort(t,t+N,compare);
for(int i=0;i<N-1;i++)
{
if(t[i].j-sum_b(t,i+1,N)>book)
book=t[i].j-sum_b(t,i+1,N);
}
if(book<t[N-1].j)
book=t[N-1].j;
printf("Case %d: %d\n",Case++,sum_b(t,0,N)+book);
}
return 0;
}
uva11729
最新推荐文章于 2021-05-30 22:27:23 发布