View Code of Problem 3861

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

typedef struct ph
{
	char name[100];
	double p;
	double q;
	double sum;
}ph;


int cmp(const void*a,const void*b)
{
	double d= (*(struct ph *)b).sum-(*(struct ph *)a).sum;
	if(d>0)
        return 1;
    else if(d<0)
        return -1;
    else
        return 0;
}

int main()
{
	struct ph phone[1100];
	int n;
	scanf("%d",&n);
	for(int i=0;i<n;i++)
	{
		int m;
		scanf("%d",&m);
		for(int j=0;j<m;j++)
		{
			scanf("%s %lf %lf",phone[j].name,&phone[j].p,&phone[j].q);
			phone[j].sum=phone[j].p/phone[j].q;
		}
		qsort(phone,m,sizeof(ph),cmp);
		for(int j=0;j<m;j++)
		{
			printf("%d %s %.0lf %.0lf\n",j+1,phone[j].name,phone[j].p,phone[j].q);
		}
	
	}
	return 0;
 } 

Double click to view unformatted code.


Back to problem 3861