View Code of Problem 50

#include  <stdio.h>
#include  <stdlib.h>
#include  <math.h>
#include  <string.h>

typedef struct _basket 
{
	int i;
	int a;
	int b;
}Basket;
#define N 10

int cmpst(const void *a, const void *b)
{
	Basket *obj1 = (Basket *)a; 
	Basket *obj2 = (Basket *)b;

	if(obj1->a != obj2->a)
		return obj2->a - obj1->a;
	else if(obj1->b != obj2->b)
		return obj2->b - obj1->b;
	else
		return obj1->i - obj2->i;
}

int main()
{
	int t,n,m,a,b;
	int i;
	Basket obj[N]={0};
	if(freopen("c:\\input.txt", "rt", stdin)==0)
	{
	}
	scanf("%d",&t);
	while (t-->0)
	{
		scanf("%d %d",&n,&m);

		i=0;
		while (i<n)
		{
			scanf("%d %d",&a,&b);
			obj[i].i=i+1;
			obj[i].a=a;
			obj[i].b=b;
			i++;
		}
		qsort(obj,n,sizeof(obj[0]),cmpst);

		for (i=0;i<m;i++)
		{
			if(i==0)
			{
				printf("%d",obj[i].i);
			}
			else
			{
				printf(" %d",obj[i].i);
			}
		}
		printf("\n");
	}
    return 0;
}

Double click to view unformatted code.


Back to problem 50