• 每日一九度之 题目1023:EXCEL排序


    时间限制:1 秒

    内存限制:32 兆

    特殊判题:

    提交:18804

    解决:4240

    题目描述:
        Excel可以对一组纪录按任意指定列排序。现请你编写程序实现类似功能。
        对每个测试用例,首先输出1行“Case i:”,其中 i 是测试用例的编号(从1开始)。随后在 N 行中输出按要求排序后的结果,即:当 C=1 时,按学号递增排序;当 C=2时,按姓名的非递减字典序排序;当 C=3
    时,按成绩的非递减排序。当若干学生具有相同姓名或者相同成绩时,则按他们的学号递增排序。
    输入:

        测试输入包含若干测试用例。每个测试用例的第1行包含两个整数 N (N<=100000) 和 C,其中 N 是纪录的条数,C 是指定排序的列号。以下有N行,每行包含一条学生纪录。每条学生纪录由学号(6位数字,同组测试中没有重复的学号)、姓名(不超过8位且不包含空格的字符 串)、成绩(闭区间[0, 100]内的整数)组成,每个项目间用1个空格隔开。当读到 N=0 时,全部输入结束,相应的结果不要输出。

    输出:
        对每个测试用例,首先输出1行“Case i:”,其中 i 是测试用例的编号(从1开始)。随后在 N 行中输出按要求排序后的结果,即:当 C=1 时,按学号递增排序;当 C=2时,按姓名的非递减字典序排序;当 C=3
    时,按成绩的非递减排序。当若干学生具有相同姓名或者相同成绩时,则按他们的学号递增排序。
    样例输入:
    3 1
    000007 James 85
    000010 Amy 90
    000001 Zoe 60
    4 2
    000007 James 85
    000010 Amy 90
    000001 Zoe 60
    000002 James 98
    4 3
    000007 James 85
    000010 Amy 90
    000001 Zoe 60
    000002 James 90
    0 0
    样例输出:
    Case 1:
    000001 Zoe 60
    000007 James 85
    000010 Amy 90
    Case 2:
    000010 Amy 90
    000002 James 98
    000007 James 85
    000001 Zoe 60
    Case 3:
    000001 Zoe 60
    000007 James 85
    000002 James 90
    000010 Amy 90

    考的是排序,各种排序。

    //Asimple
    #include <iostream>
    #include <algorithm>
    #include <cstring>
    #include <cstdio>
    #include <cctype>
    #include <cstdlib>
    #include <stack>
    #include <cmath>
    #include <string>
    #include <queue>
    #define INF 100000
    using namespace std;
    const int maxn = 100005;
    typedef long long ll ;
    int n, m, num = 1;
    
    typedef struct node{
        char no[10];
        char name[10];
        int grade;
    }im;
    
    im st[maxn];
    
    bool cmp1(const node& a, const node& b){
        return strcmp(a.no,b.no)<0;
    }
    
    bool cmp2(const node& a,const node& b){
        if( strcmp(a.name,b.name) != 0){
            return strcmp(a.name, b.name)<0;
        } else {
            return strcmp(a.no, b.no)<0;
        }
    }
    
    bool cmp3(const node& a,const node& b){
        if( a.grade != b.grade ){
            return a.grade < b.grade ;
        } else {
            return strcmp(a.no,b.no)<0;
        }
    }
    
    int main(){
        while( scanf("%d %d",&n,&m) && ( n + m ) ){
            for(int i=0; i<n; i++){
                scanf("%s %s %d",st[i].no,st[i].name,&st[i].grade);
            }
            switch(m){
                case 1:
                    sort(st,st+n,cmp1);
                    break;
                case 2:
                    sort(st,st+n,cmp2);
                    break;
                case 3:
                    sort(st,st+n,cmp3);
                    break;
            }
            printf("Case %d:
    ",num);
            num ++ ;
            for(int i=0; i<n; i++){
                printf("%s %s %d
    ",st[i].no,st[i].name,st[i].grade);
            }
        }
        return 0;
    }
    低调做人,高调做事。
  • 相关阅读:
    天梯赛5-12 愿天下有情人都是失散多年的兄妹 【dfs】
    poj2718 Smallest Difference【贪心】
    HDU problem 5635 LCP Array【思维】
    codeforces 782C Andryusha and Colored Balloons【构造】
    HDU 4278 Faulty Odometer【进制转换】
    codeforces B. The Meeting Place Cannot Be Changed【二分】
    POJ 3264 Balanced Lineup 【线段树】
    HDU 1850
    CodeForces-714C
    HDU Problem 1247 Hat's Words 【字典树】
  • 原文地址:https://www.cnblogs.com/Asimple/p/5843415.html
Copyright © 2020-2023  润新知