#include <bits/stdc++.h>
using namespace std;
struct act{
int start;//开始时间
int end;//结束时间
int tag;//用于标记是第几个活动
}acts[100];
bool cmp(const act &a,const act &b){
return a.end<b.end;
}
/*
测试数据:
4
1 5
3 4
1 2
5 7
*/
int main(){
int n;
cin>>n;
for(int i=0;i<n;i++){
cin>>acts[i].start>>acts[i].end;
}
for(int i=0;i<n;i++){
acts[i].tag=i+1;
}
sort(acts,acts+n,cmp);//按活动结束时间排序
int j=0;
int A[100];//用于存放活动安排的顺序
A[0]=acts[0].tag;
for(int i=1;i<n;i++){
if(acts[i].start>acts[j].end){
A[i]=acts[i].tag;
j++;
}else{
A[i]=-1;
}
}
cout<<"活动安排顺序为:";
for(int i=0;i<n;i++){
if(A[i]>0){
cout<<A[i]<<" ";
}
}
return 0;
}
解决了结束时间不规律的问题

1万+

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



