/*
Name: 突擊戰
Copyright: 劉汝佳
Author: Analyst
Date: 27/02/14 23:59
Description: dev-cpp 5.5.3
*/
#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;
struct Job
{
int j, b;
bool operator < (const Job& x) const //運算符重載。不要忘記const修飾符
{
return j > x.j; //由大到小排序
}
};
int main()
{
int n, b, j, kase = 1;
while (scanf("%d", &n) == 1 && n)
{
vector<Job> v;
for (int i = 0; i < n; ++i)
{
scanf ("%d%d", &b, &j);
v.push_back((Job){j,b});
}
sort(v.begin(), v.end()); //使用Job類自己的 < 運算符排序(大->小)
int s = 0;
int ans = 0;
for (int i = 0; i < n; ++i)
{
s += v[i].b; //當前任務的開始執行時間
ans = max(ans, s+v[i].j); //更新執行任務完成時最晚時間
}
printf("Case %d: %d\n",kase++, ans);
}
return 0;
}
ps:
1.注意重載sort排序,使之由大到小排序。
2.注意任務結束時間,選擇最長的。