5-40 奥运排行榜

这里写图片描述

#include<stdio.h>
#include<stdlib.h>
#define MAX 224
struct node{
    int gold;
    int reward;
    int person;
    float avergold;
    float averreward;
    int rank;
    int number;
}P[MAX];
void Insertsort(int A[],int N)
{
    int i,j,temp;
    for(i=1;i<N;i++)
    {
        temp=A[i];
        for(j=i;j>0&&temp>A[j-1];j--)
            A[j]=A[j-1];
        A[j]=temp;
    }
}
void Insertsort2(float A[],int N)
{
    int i,j;
    float temp;
    for(i=1;i<N;i++)
    {
        temp=A[i];
        for(j=i;j>0&&temp>A[j-1];j--)
            A[j]=A[j-1];
        A[j]=temp;
    }
}
main()
{
    int N,M,i,j,country[MAX];
    int num1[MAX],temp;
    float num2[MAX],temp2;
    scanf("%d %d",&N,&M);
    for(i=0;i<N;i++)
    {
        scanf("%d %d %d",&P[i].gold,&P[i].reward,&P[i].person);
        P[i].avergold=(float)P[i].gold/P[i].person;
        P[i].averreward=(float)P[i].reward/P[i].person;
        P[i].rank=MAX;
    }
    for(i=0;i<M;i++)
        scanf("%d",&country[i]);
    //金牌排名
    for(i=0;i<N;i++)
        num1[i]=P[i].gold;
    Insertsort(num1,N);
    for(i=0;i<N;i++)
    {
       temp=num1[i];
       for(j=0;j<N;j++)
       {
           if(temp==P[j].gold)
           {
               if(i<P[j].rank)
               {
                   P[j].rank=i;
                   P[j].number=1;
               }
           }
       }
    }
    //奖牌排名
    for(i=0;i<N;i++)
        num1[i]=P[i].reward;
    Insertsort(num1,N);
    for(i=0;i<N;i++)
    {
       temp=num1[i];
       for(j=0;j<N;j++)
       {
           if(temp==P[j].reward)
           {
               if(i<P[j].rank)
               {
                   P[j].rank=i;
                   P[j].number=2;
               }
           }
       }
    }
    //国民人均金牌排名
    for(i=0;i<N;i++)
        num2[i]=P[i].avergold;
    Insertsort(num2,N);
    for(i=0;i<N;i++)
    {
       temp2=num2[i];
       for(j=0;j<N;j++)
       {
           if(temp2==P[j].avergold)
           {
               if(i<P[j].rank)
               {
                   P[j].rank=i;
                   P[j].number=3;
               }
           }
       }
    }
    //国民人均奖牌排名
    for(i=0;i<N;i++)
        num2[i]=P[i].averreward;
    Insertsort(num2,N);
    for(i=0;i<N;i++)
    {
       temp2=num2[i];
       for(j=0;j<N;j++)
       {
           if(temp2==P[j].averreward)
           {
               if(i<P[j].rank)
               {
                   P[j].rank=i;
                   P[j].number=4;
               }
           }
       }
    }
    //输出
    for(i=0;i<M-1;i++)
        printf("%d:%d ",P[country[i]].rank+1,P[country[i]].number);
    printf("%d:%d\n",P[country[i]].rank+1,P[country[i]].number);
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值