#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;
}
解決了結束時間不規律的問題