Problem Description
比如有5个活动,开始与截止时刻分别为:
![](https://i-blog.csdnimg.cn/blog_migrate/bffbe9e1abb8eb1e0c76b04dd969a706.png)
最佳安排序列为:1,4,5。
Input
以后输入n行,分别输入序号为1到n的活动使用中心的开始时刻a与截止时刻b(a,b为整数且0<=a,b<24,a,b输入以空格分隔)。
Output
Example Input
6
8 10
9 16
11 16
14 15
10 14
7 11
Example Output
1,5,4
#include <stdio.h>
#include <stdlib.h>
struct node
{
int a,b,c;
}p[100],t;
int main()
{
int n,m,j,k,i;
scanf("%d",&n);
for(i=0;i<n;i++)
{
scanf("%d %d",&p[i].a,&p[i].b);
}
for(i=0;i<n;i++)
p[i].c=i+1;//活动的次序;
for(i=0;i<n;i++)//冒泡排序;
{
for(j=0;j<n-i-1;j++)
if(p[j].b>p[j+1].b)
{
t=p[j];p[j]=p[j+1];
p[j+1]=t;
}
}
m=0;j=0;k=0;
int x[101];//计入活动的次序;
while(m<n)
{
if(p[m].a>=k)
{
k=p[m].b;
x[j]=p[m].c;j++;
}
m++;
}
for(i=0;i<j;i++)
if(i!=j-1)
printf("%d,",x[i]);
else
printf("%d\n",x[i]);
return 0;
}