一下午心不在焉的做这一道题,于是后果很严重,先开始理解错题意,后来理解了也思路不清,分析了别人的代码好一会,唉唉,看来以后要专点心的!
#include<stdio.h>
#include<stdlib.h>
struct fun{
int x;
int y,z;
}a[1005];
int cmp(const void *a,const void *b)
{
struct fun *c=(struct fun *)a;
struct fun *d=(struct fun *)b;
if(c->y!=d->y)
return c->y-d->y;
else
return c->z-d->z;
}
int main()
{
int n,i,k,t,f[1005];
while(scanf("%d",&n)&&n)
{
for(i=1;i<=n;i++)
{
scanf("%d%d",&a[i].y,&a[i].z);
a[i].x=i;
}
qsort(&a[1],n,sizeof(struct fun),cmp);
k=1;f[k]=1;
for(i=2;i<=n;i++)
{
if(a[i].y>a[f[k]].z)
{
f[++k]=i;
}
else if(a[i].z<a[f[k]].z)
f[k]=i;
}
for(i=1;i<k;i++)
printf("%d ",a[f[i]].x);
printf("%d",a[f[k]].x);
printf("\n");
}
return 0;
}