View Code of Problem 3861

#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <string.h>
typedef struct{
	char name[20];
	int p;
	int q;
}phone;
phone m[100];

int cmp(const void *a,const void *b)
{
	phone *pa=(phone *)a;
	phone *pb=(phone *)b;
	float num1=pa->p/pa->q;
	float num2=pb->p/pb->q;
	if(num1>num2)
	{
		return -1;
	}
	else
	{
		return 1;
	}
}

int main()
{
	int t,i,j;
	scanf("%d",&t);
	int k=t;
	while(k--)
	{
		j=1;
		int n;
		scanf("%d",&n);
		for(i=0;i<n;i++)
		{
			scanf("%s%d%d",m[i].name,&m[i].p,&m[i].q);
		}
		qsort(m,n,sizeof(phone),cmp);
		for(i=0;i<n;i++)
		{
			printf("%d %s %d %d\n",j++,m[i].name,m[i].p,m[i].q);
		}
	}
	return 0;
}

Double click to view unformatted code.


Back to problem 3861