最近开始有目的性做题,先从UVA开始吧
题目很简单,不过算法经典给的做法感觉并不适合我,自己用结构体写了一发A了。
思路就是先交代执行任务较长的任务,然后统计每个任务完成时间,循环一遍找最大值即可。
#include <iostream>
#include <cstring>
#include <cmath>
#include <cstdio>
#include <cstdlib>
#include <algorithm>
using namespace std;
struct node
{
int a,b,s;
}t[10001];
bool cmp(node a,node b)
{
return a.b>b.b;
}
int main()
{
int n,k=1;
int i,j;
int time;
while(cin>>n)
{
if(n==0)
{
break;
}
time=0;
for(i=0;i<n;i++)
{
cin>>t[i].a>>t[i].b;
}
sort(t,t+n,cmp);
t[0].s=t[0].a+t[0].b;
for(i=1;i<n;i++)
{
t[i].s=t[i].a+t[i].b+t[i-1].s-t[i-1].b;
}
for(i=0;i<n;i++)
{
if(t[i].s>time)
{
time=t[i].s;
}
}
cout<<"Case "<<k<<": "<<time<<endl;
k++;
}
return 0;
}