View Code of Problem 5

#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <string.h>
 
typedef struct node{
    int num;
    int apple;
    int pear;
}node;
 
int comp(const void* a,const void* b)
{
    node* c = (node*)a;
    node* d = (node*)b;
    if(c->apple == d->apple)
    {
        if(c->pear == d->pear)
            return c->num - d->num;
        else
            return d->pear - c->pear;
    }
    else
        return d->apple - c->apple;
 
}
 
int main(void)
{
    int t,m,n;
    scanf("%d",&t);
    while(t--)
    {
        scanf("%d%d",&m,&n);
        int i,j,k;
        node fruit[1000];
        for(i = 0;i < m;i++)
        {
            scanf("%d%d",&fruit[i].apple,&fruit[i].pear);
            fruit[i].num = i;
        }
        qsort(fruit,m,sizeof(node),comp);
        for(i = 0;i < n;i++)
        {
            if(i == n -1)
                printf("%d\n",fruit[i].num + 1);
            else
                printf("%d ",fruit[i].num + 1);
        }
 
    }
    return 0;
}

Double click to view unformatted code.


Back to problem 5