数据结构与算法实验代码F. 奥运排行榜 时间限制 1

编辑: admin           2017-26-03         

    #include

    int gold[225],medal[225],population[225];

    int list[10];

    int fir = 0;//用来判断是否是第一个元素用的

    void printresult(int check_number,int n);

    int main()

    {

    int n,m;

    scanf("%d%d",&n,&m);

    for(int i = 0;i < n;i++)

    scanf("%d%d%d",&gold[i],&medal[i],&population[i]);

    for(int i = 0;i < m;i++)

    {

    int check_number;

    scanf("%d",&check_number);

    printresult(check_number,n);

    }

    printf("\n");

    return 0;

    }

    void printresult(int check_number,int n)

    {

    for(int i = 0;i < n;i++)

    {

    if(gold[i]>gold[check_number])

    list[1]++;

    }

    int result = ++list[1];//这里还要多加一个1,因为数组原来是0

    int num = 1;

    for(int i = 0;i < n;i++)

    {

    if(medal[i]>medal[check_number])

    list[2]++;

    }

    list[2]++;

    double gold_per = gold[check_number]*1.0/population[check_number];

    for(int i = 0;i < n;i++)

    {

    if((gold[i]*1.0/population[i])>gold_per)

    list[3]++;

    }

    list[3]++;

    double medal_per = medal[check_number]*1.0/population[check_number];

    for(int i = 0;i < n;i++)

    {

    if(medal[i]*1.0/population[i]>medal_per)

    list[4]++;

    }

    list[4]++;

    for(int i = 1;i < 5;i++)

    {

    if(list[i]

    {

    result = list[i];

    num = i;

    }

    }

    for(int i = 1;i < 5;i++)

    list[i] = 0;//对排名数组清零,因为之后要多次调用

    if(!fir)

    {

    printf("%d:%d",result,num);//首个输入前面不用空格

    fir = 1;

    }

    else

    printf(" %d:%d",result,num);

    }

    //如果超时的话还可以再优化,不过国家的数量比较少,应该不会

    //优化就是把排名是1的话直接输出,不进行之后运算

  •   4
  • 相关文章

    s30403+Q245R什么意思-s30403
    优秀记叙文450字-优秀叙事文
    怎么快速学会溜冰 溜冰上瘾吗 长期溜冰的危害-溜冰危
    “伊妹儿” 作文-伊妹儿格式
    流星雨,流行会掉到哪里,是地球上吗落到地面时能有多.
    中国为什么在英文中叫china!-中国英文
    张勋复辟 作文-张勋复辟
    shoko 怎么念?翔子的意思-shoko
    驻足痴望的意思-驻足痴望的意思
    《国王的演讲》观后感 作文-国王的演讲
Copyright ©2009-2021 逆火网训All Rights Reserved.     滇ICP备2023009294号-57