zoukankan      html  css  js  c++  java
  • ACM排序题

    题目描述

    今年的ACM世界总决赛快要开始了,需要有一个排名算法来对每支队伍进行现场排名。ACM组委会把这个任务交给了你,相信你一定能很好地完成。
    排名规则如下:通过题的数目多的队伍排名靠前,如果有多支队伍过的题的数目相同,则罚时少的队伍排名靠前。

    输入

    输入的第一行包括一个整数N(1<=N<=100),代表参加比赛的队伍的个数。
    接下来的N行每行包括一个字符串和两个整数num,punish,它们之间用空格隔开。其中,第一个字符串代表参赛的队伍名称(字符串的长度1<=len<=101),num代表这个学校过了的题目个数(1<=num<=11),punish代表这个学校的罚时(1<=punish<=1000)。

    输出

    请按题目描述的规则对所有队伍进行排序,并按照从高到低的顺序对队伍的名称进行输出。当然可能存在多支队伍,不仅通过题目数量相同,而且罚时相同。虽然这些队伍最后排名是相同的,但是你输出时需要按照队伍名称的字典序进行输出,比如,队伍aa和队伍ba,你需要先输出aa,然后输出ba,因为aa的字典序比ba的靠前。

    样例输入

    4
    RealPlayers 3 100
    Potatoes 5 30
    blue_sky 7 800
    3D_magic_cube 5 50
    

    样例输出

    blue_sky
    Potatoes
    3D_magic_cube
    RealPlayers
    代码如下
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    struct COM{
        char s[100];//名字
        int num;//过了的题目数s
        int punish;//罚时
    };
    
    int main()
    {
        int n,i,min,j;
        struct COM a[1000],t;
        scanf("%d",&n);
        getchar();
        for(i=0;i<n;i++)
        {
            scanf("%s%d%d",a[i].s,&a[i].num,&a[i].punish);
        }
        for(i=0;i<n;i++)//选择排序
        {
            min=i;//每次排序后该放的下标
            for(j=i;j<n;j++)//!!!!!!!!!
            {
                if(a[min].num<a[j].num)
                {
                    min=j;
                }
                else if(a[min].num==a[j].num)
                {
                    if(a[min].punish>a[j].punish)
                    {
                        min=j;
                    }
                    else if(a[min].punish==a[j].punish)
                    {
                        if(strcmp(a[min].s,a[j].s)>0)
                        {
                            min=j;
                        }
                    }
                }
    
            }
            if(min!=i)//要把整个结构体复制一份
                {
                   t=a[i];//结构体赋值!!!!!!!!!!!!!
    
                   a[i]=a[min];
    
                   a[min]=t;
    
                }
        }
        for(i=0;i<n;i++)
        {
            printf("%s
    ",a[i].s);
        }
        return 0;
    }
    
    

    欢迎纠正错误~


    祝你早日攒够失望,然后开始新的生活。
  • 相关阅读:
    改造vant日期选择
    css3元素垂直居中
    npm综合
    (转)网页加水印方法
    Mac下IDEA自带MAVEN插件的全局环境配置
    隐藏注册控件窗口
    High performance optimization and acceleration for randomWalk, deepwalk, node2vec (Python)
    How to add conda env into jupyter notebook installed by pip
    The Power of WordNet and How to Use It in Python
    背单词app测评,2018年
  • 原文地址:https://www.cnblogs.com/LuRenJiang/p/6531563.html
Copyright © 2011-2022 走看看