View Code of Problem 5

#include<stdio.h>

int main(void)
{
    int t;
    scanf("%d",&t);
    while(t--)
    {
        int a,b,m,n; //a是苹果,b是梨,在n个篮子中选m个
        int apple[100000],li[100000],sum[100000];
        int i,j,k,flag,temp,sumTest;

        scanf("%d%d",&n,&m);  //n个篮子,选其中m个篮子
        for(i=0; i<n; ++i)
        {
            scanf("%d%d",&a,&b);
            apple[i] = a;
            li[i] = b;
            sum[i] = a*10+b;   //sum数组求权值
        }
        //使sum数组前m个数有序排列
        for(j=0; j<m; ++j)
        {
            flag = 0;
            for(k=n-1; k>j; --k)
                if(sum[k]>sum[k-1])
                {
                    temp = sum[k-1];
                    sum[k-1] = sum[k];
                    sum[k] = temp;
                    flag = 1;
                }
            if(!flag)
                break;
        }
        //挑选出前m个权值最大的篮子
        for(j=0; j<m; ++j)
        {
            for(k=0; k<n; ++k)
            {
                sumTest = apple[k]*10+li[k];
                if(sumTest==sum[j])
                {
                    printf("%d ",k+1);
                    break;
                }
            }
        }
        printf("\n");
    }
    return 0;
}

Double click to view unformatted code.


Back to problem 5