#include<bits/stdc++.h>
using namespace std;
struct Active
{
int start; // 活动开始时间
int finish; // 活动结束时间
int num; // 活动编号,从1开始
}actives[110];
int main()
{
int n;
cin>>n;
for (int i = 0; i < n; i++){
cin>>actives[i].start>>actives[i].finish;
actives[i].num = i+1;
}
// 冒泡排序,将结束的早的活动放在前面
for (int i = 0;i < n-1; i++){
for (int j = 0; j < n-i-1; j++){
if (actives[j].finish > actives[j+1].finish){
swap(actives[j], actives[j+1]);
}
}
}
// 先输出第一个活动
cout<<actives[0].num;
// 标记前面所有活动的最终结束时间
int end_time = actives[0].finish;
for (int i = 1; i < n; i++){
// 如果该活动的开始时间在最终结束时间之后
// 则将该活动输出
// 同时维护最终结束时间
if (actives[i].start >= end_time){
cout<<","<<actives[i].num;
end_time = actives[i].finish;
}
}
cout<<endl;
return 0;
}
SDUTOJ 1298 - 活动选择
最新推荐文章于 2023-02-20 17:11:54 发布