CodeForces479C Exams(贪心)
题目大意:
有位同学参加N门考试,他希望能够提前的结束这N门考试,所以和各门科目的老师协商了一下,换一天考试Ai,然后他又希望成绩的录入时间是非递减的,成绩的录入时间是按照科目原本的考试时间。求最后一门科目的结束时间,越早越好。
解题思路:
将原本的考试时间按照时间先后排序,如果两门课在同一天,那么自然是和老师协商的新的时间小的放前面,这样才能在满足录入时间非递减的情况下达成结束时间越早的目标。
代码:
#include <cstdio>
#include <algorithm>
using namespace std;
const int maxn = 5005;
struct exam {
int a, b;
}e[maxn];
int cmp(const exam& e1, const exam& e2) {
if (e1.a != e2.a)
return e1.a < e2.a;
return e1.b < e2.b;
}
int main () {
int N;
while (scanf("%d", &N) != EOF ) {
for (int i = 0; i < N; i++)
scanf ("%d%d", &e[i].a, &e[i].b);
sort(e, e + N, cmp);
int ans = 0;
for (int i = 0; i < N; i++) {
if (ans <= e[i].b)
ans = e[i].b;
else
ans = e[i].a;
}
printf ("%d\n", ans);
}
return 0;
}