题意:
给部下分配任务,需要交代时间以及完成时间,部下可同时完成任务.
思路:
先按照执行时间排序,然后枚举所有的任务,用sum累加所有的交代时间,(因为任务可以同时完成,而交代时间不行)然后加上当前需考虑的任务完成时间是否超当前做大值,超过就替换.
代码:
#include<algorithm>
#include<cstdio>
#include<iostream>
using namespace std;
struct node {
int b, j;
}s[1005];
int cmp(node a, node b) {
return a.j > b.j;
}
int main() {
int n;
int cas = 0;
while(scanf("%d", &n) != EOF && n) {
for(int i=0; i<n; i++) scanf("%d%d", &s[i].b, &s[i].j);
sort(s, s+n, cmp);
int sum = 0, total = 0;
for(int i=0; i<n; i++) {
sum += s[i].b;
total = max(total, sum+s[i].j);
}
printf("Case %d: %d\n", ++cas, total);
}
return 0;
}