PAT_A1028#List Sorting

Source:

PAT A1028 List Sorting (25 分)

Description:

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 (≤) 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 90

Sample Output 3:

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

Keys:

  • 模拟题

Code:

 1 /*
 2 Data: 2019-07-17 18:40:30
 3 Problem: PAT_A1028#List Sorting
 4 AC: 12:22
 5 
 6 题目大意:
 7 排序
 8 输入:
 9 第一行给出,记录数N<=1e5,排序规则C
10 接下来N行,id,name,grade
11 C=1,id递增
12 C=2,name递增+id递增
13 C=3,grade递增+id递增
14 */
15 
16 #include<cstdio>
17 #include<cstring>
18 #include<algorithm>
19 using namespace std;
20 const int M=1e5+10,N=10;
21 struct node
22 {
23     char name[N];
24     int id,grade;
25 }info[M];
26 
27 bool cmp_name(const node &a, const node &b)
28 {
29     return strcmp(a.name,b.name) < 0;
30 }
31 
32 bool cmp_grade(const node &a, const node &b)
33 {
34     return a.grade < b.grade;
35 }
36 
37 bool cmp_id(const node &a, const node &b)
38 {
39     return a.id < b.id;
40 }
41 
42 int main()
43 {
44 #ifdef    ONLINE_JUDGE
45 #else
46     freopen("Test.txt", "r", stdin);
47 #endif
48 
49     int n,c;
50     scanf("%d%d", &n,&c);
51     for(int i=0; i<n; i++)
52         scanf("%d %s %d\n", &info[i].id,info[i].name,&info[i].grade);
53     sort(info,info+n,cmp_id);
54     if(c==2)
55         sort(info,info+n,cmp_name);
56     if(c==3)
57         sort(info,info+n,cmp_grade);
58     for(int i=0; i<n; i++)
59         printf("%06d %s %d\n", info[i].id,info[i].name,info[i].grade);
60 
61     return 0;
62 }

猜你喜欢

转载自www.cnblogs.com/blue-lin/p/11203019.html