View Code of Problem 5

#include<stdio.h>
#include<stdlib.h> 
typedef struct lanzi{
	int id;
	int apple;
	int pear;
}lanzi;

int cmp(const void * a,const void * b)
{
    struct lanzi *lanzi1=(struct lanzi *)a;
	struct lanzi *lanzi2=(struct lanzi *)b;
	int fruit1 = lanzi1->apple;
	int fruit2 = lanzi2->apple;
	if (fruit1==fruit2)
	{
		fruit1=lanzi1->pear;
		fruit2=lanzi2->pear;
		if (fruit1==fruit2)
			return lanzi1->id-lanzi2->id;
	}
	return fruit2-fruit1;
}




int main(){
	int t;
	int n,m;
	lanzi s[100000];
	scanf("%d",&t);
	while(t--){
		scanf("%d %d",&n,&m);
		for(int i=0;i<n;i++){
			s[i].id=i+1;         //序号从一开始 
			scanf("%d %d",&s[i].apple,&s[i].pear);
		}

		qsort(s,n,sizeof(s[0]),cmp);    //快速排序 
		
		/*for(int i=0;i<n;i++) 
		printf("%d %d %d\n",s[i].id,s[i].apple,s[i].pear);*/
		
		for(int i=0;i<m-1;i++)
		printf("%d ",s[i].id);
		printf("%d\n",s[m-1].id);
	}
}
 

Double click to view unformatted code.


Back to problem 5