描述
经常做比赛是提高ACM水平的重要手段。现在环境好,各种比赛很多,各高校、公司、非盈利组织都时常举办各种竞赛。
然而,他们中有一些会在时间上冲突,你就不得不做出选择了。给一个各种比赛的日程表,请问最多能参加多少个比赛。
输入
输入数据包含多个测试实例。每个测试实例的第一行是一个整数N(N<1000),表示共有N场比赛。接下来是N行,每行两个正整数ai和bi分别表示比赛的起始时间和结束时间(以秒为单位)。
输出
对于每个测试实例,请在一行内输出最多能参加多少个比赛。
样例输入1
12 1 3 3 4 0 7 3 8 15 19 15 20 10 15 8 18 6 12 5 10 4 14 2 9
样例输出1
5
#include <iostream>
#include <algorithm>
using namespace std;
struct camp
{
int begin;
int end;
};
bool com(camp a, camp b)
{
return a.end < b.end;
}
int main()
{
camp a[1050];
int n;
while (cin >> n)
{
for (int i = 0; i < n; i++)
{
cin >> a[i].begin >> a[i].end;
}
sort(a, a + n, com);
int ans = 0;
int start = 0;
for (int i = 0; i < n; i++)
{
if (start <= a[i].begin)
{
start = a[i].end;
ans++;
}
}
cout << ans << endl;
}
return 0;
}
450

被折叠的 条评论
为什么被折叠?



