zoukankan      html  css  js  c++  java
  • 九度OJ 1346:会员积分排序 (排序)

    时间限制:1 秒

    内存限制:32 兆

    特殊判题:

    提交:967

    解决:413

    题目描述:

    元旦佳节快到了,超市A想要给会员一些奖品。但是奖品有限,所以它需要给这些会员做一个排序,然后将名单输出来。排序的规则是,先按积分排序,如果会员的积分相同则按他的ID排序,因为ID号小则表示他注册的时间早。
    现在某超市有每个会员的ID(ID保证不重复)、积分,它想要请你帮忙给排个序。

    输入:

    输入有多组数据。
    每组第一行输入n(1<=n<=1000),m(1<=m<=50),n表示会员个数,m表示奖品个数;之后N行分别是两个整数id和s,id为这个会员的ID,s代表了这个会员的积分。

    输出:

    对每组输入输出min(m,n)个获奖的会员ID(按积分降序输出,如果积分相同按ID升序输出),每个会员ID一行。

    样例输入:
    5 3
    1 5
    2 10
    3 3
    4 20
    5 2
    样例输出:
    4
    2
    1

    代码:

    #include <stdio.h>
    #include <stdlib.h>
     
    #define N 1000
    #define M 50
     
    struct node {
        int id;
        int score;
    } a[N];
     
    int cmp(const void *a, const void *b)
    {
        struct node *c = (struct node *)a;
        struct node *d = (struct node *)b;
        if (c->score != d->score)
            return d->score - c->score;
        else
            return c->id - d->id;
    }
     
    int main(void)
    {
        int n, m, i;
     
        while (scanf("%d%d", &n, &m) != EOF)
        {
            for(i=0; i<n; i++)
                scanf("%d%d", &(a[i].id), &(a[i].score));
            qsort(a, n, sizeof(a[0]), cmp);
     
            for (i=0; i<((n<m)?n:m); i++)
                printf("%d
    ", a[i].id);
        }
     
        return 0;
    }
    /**************************************************************
        Problem: 1346
        User: liangrx06
        Language: C
        Result: Accepted
        Time:100 ms
        Memory:920 kb
    ****************************************************************/


  • 相关阅读:
    linux nat路由设置
    [auv] 模拟呼叫
    Sqlserver 导出insert插入语句
    函数name属性
    学习前端,应该选择哪些书籍来看?(转)
    JavaScript继承学习笔记
    Web响应式网站
    Javascript 异步加载详解(转)
    使用 nodeinspector 调试 Node.js
    用 JavaScript 检测 CPU 占比(转)
  • 原文地址:https://www.cnblogs.com/liangrx06/p/5083787.html
Copyright © 2011-2022 走看看