1028 List Sorting (25)

Excel can sort records according to any column. Now you are supposed to imitate this function.

Input Specification:

Each input file contains one test case. For each case, the first line contains two integers N (≤10e5) and C, where N is the number of records and C is the column that you are supposed to sort the records with. Then N lines follow, each contains a record of a student. A student's record consists of his or her distinct ID (a 6-digit number), name (a string with no more than 8 characters without space), and grade (an integer between 0 and 100, inclusive).

Output Specification:

For each test case, output the sorting result in N lines. That is, if C = 1 then the records must be sorted in increasing order according to ID's; if C = 2 then the records must be sorted in non-decreasing order according to names; and if C = 3 then the records must be sorted in non-decreasing order according to grades. If there are several students who have the same name or grade, they must be sorted according to their ID's in increasing order.

Sample Input 1:

3 1
000007 James 85
000010 Amy 90
000001 Zoe 60

Sample Output 1:

000001 Zoe 60
000007 James 85
000010 Amy 90

Sample Input 2:

4 2
000007 James 85
000010 Amy 90
000001 Zoe 60
000002 James 98

Sample Output 2:

000010 Amy 90
000002 James 98
000007 James 85
000001 Zoe 60

Sample Input 3:

4 3
000007 James 85
000010 Amy 90
000001 Zoe 60
000002 James 9

Sample Output 3:

000002 James 9
000001 Zoe 60
000007 James 85
000010 Amy 90

题目大意:给出n个记录,分别包括id,name,grade。根据c的值是1还是2还是3,对相应的列排序,其中第一列升序,第二列不降序,第三列不降序。
分析:直接用stl的sort排序即可。

cpp 复制代码
#include<algorithm>
#include <iostream>
#include  <cstdlib>
#include  <cstring>
#include   <string>
#include   <vector>
#include   <cstdio>
#include    <ctime>
#include    <cmath>
using namespace std;

typedef struct record
{
    int id,grade;
    string name;
}record;

bool cmp1(record a,record b)
{
    if(a.id!=b.id)return a.id<b.id;
}

bool cmp2(record a,record b)
{
    if(a.name!=b.name)return a.name<=b.name;
    return a.id<b.id;
}

bool cmp3(record a,record b)
{
    if(a.grade!=b.grade)return a.grade<=b.grade;
    return a.id<b.id;
}

int main(void)
{
    #ifdef test
    freopen("in.txt","r",stdin);
    //freopen("in.txt","w",stdout);
    clock_t start=clock();
    #endif //test

    int n,c;
    scanf("%d%d",&n,&c);
    record re[n+5];
    for(int i=0;i<n;++i)
    {
        scanf("%d",&re[i].id);
        cin>>re[i].name;
        scanf("%d",&re[i].grade);
    }
    switch (c)
    {
        case 1:sort(re,re+n,cmp1);break;
        case 2:sort(re,re+n,cmp2);break;
        case 3:sort(re,re+n,cmp3);break;
    }
    for(int i=0;i<n;++i)
    {
        printf("%06d ",re[i].id);
        cout<<re[i].name;
        printf(" %d\n",re[i].grade);
    }

    #ifdef test
    clockid_t end=clock();
    double endtime=(double)(end-start)/CLOCKS_PER_SEC;
    printf("\n\n\n\n\n");
    cout<<"Total time:"<<endtime<<"s"<<endl;        //s为单位
    cout<<"Total time:"<<endtime*1000<<"ms"<<endl;    //ms为单位
    #endif //test
    return 0;
}
相关推荐
哈哈,柳暗花明4 天前
软件设计师笔记-数据结构
pat考试
绯樱殇雪16 天前
编程题 7-29 删除字符串中的子串【PAT】
c++·pat考试
绯樱殇雪1 个月前
编程题 7-14 求整数段和【PAT】
c++·pat考试
C盘清理2 个月前
2025考研倒计时 考研时间公布了 你准备好复习冲刺了吗?
考研·倒计时·pat考试·高考·倒计时软件·日期倒计时
绯樱殇雪2 个月前
函数题 6-8 简单阶乘计算【PAT】
c·pat考试
Moliay4 个月前
1117 数字之王
c语言·c++·算法·pat考试·简单模拟
zhang98800005 个月前
2024-2025最新软考系统架构设计师的复习资料教材,解决如何快速高效通过该考试,试题的重点和难点在哪里?案例分析题和论文题的要点和踩坑点分析
考研·面试·职场和发展·系统架构·运维开发·pat考试·学习方法
Moliay5 个月前
1052 卖个萌(测试点1,2)
笔记·算法·pat考试·简单模拟
Moliay5 个月前
1123 舍入(测试点2,6,7,8)
c语言·c++·算法·c·pat考试