您的位置:首页 > 编程语言 > C语言/C++

uva11729

2016-01-26 16:04 225 查看
#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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  c++ uva11729 算法