zoukankan      html  css  js  c++  java
  • 九度OJ 1339:ACM (排序)

    时间限制:1 秒

    内存限制:32 兆

    特殊判题:

    提交:712

    解决:379

    题目描述:

    今年的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

    思路:

    排序题用qsort或者sort都比较简单,主要是注意细节。


    代码:

    #include <stdio.h>
    #include <string.h>
    #include <stdlib.h>
     
    #define N 100
     
    typedef struct node {
        char name[105];
        int num;
        int punish;
    } TEAM;
     
    int cmp(const void *a, const void *b)
    {
        TEAM *c = (TEAM *)a;
        TEAM *d = (TEAM *)b;
        if (c->num != d->num)
            return d->num - c->num;
        if (c->punish != d->punish)
            return c->punish - d->punish;
        return strcmp(c->name, d->name);
    }
     
    int main(void)
    {
        int n, i;
        TEAM t[N];
     
        while (scanf("%d", &n) != EOF)
        {
            for(i=0; i<n; i++)
                scanf("%s%d%d", t[i].name, &t[i].num, &t[i].punish);
            qsort(t, n, sizeof(t[0]), cmp);
            for(i=0; i<n; i++)
                printf("%s
    ", t[i].name);
        }
     
        return 0;
    }
    /**************************************************************
        Problem: 1339
        User: liangrx06
        Language: C
        Result: Accepted
        Time:0 ms
        Memory:912 kb
    ****************************************************************/


  • 相关阅读:
    计算机病毒
    wordpress搬家教程
    javascript的DOM学习之选项卡制作
    javascript的DOM学习上
    [转]jQuery 引用地址{包括jquery和google提供的地址}, 节省你不必要的流量
    CSS3属性之:transition
    CSS3属性之:animastion
    css3学习系列之box-shadow(1)
    使ie678支持css3伪类选择器的插件
    个人网站名称填写注意事项
  • 原文地址:https://www.cnblogs.com/liangrx06/p/5083794.html
Copyright © 2011-2022 走看看