P1093 奖学金

如果两个同学总分和语文成绩都相同,最后按排名顺序输出前五名名学生的学号和总分,如果两个同学总分和语文成绩都相同,最后按排名顺序输出前五名名学生的学号和总分,如果两个同学总分和语文成绩都相同,最后按排名顺序输出前五名名学生的学号和总分,如果两个同学总分和语文成绩都相同,最后按排名顺序输出前五名名学生的学号和总分

输入输出格式

输入格式:

输入文件scholar.in包蕴n+1行:

第1作为一个正整数n,不超越300,表示高校参加评选的上学的小孩子人数。

第2到n+1行,每行有3个用空格隔开分离的数字,各类数字都在0到100里头。第j行的3个数字依次表示学号为j-1的学员的语文、数学、希伯来语的成绩。每一个学生的学号根据输入顺序编号为1~n(恰好是输入数据的行号减1)。

所给的多少都是没有什么可争辨的的,不必核实。

//感谢 黄小U果汁 改进输入格式

出口格式:

输出文件scholar.out共有5行,每行是多少个用空格隔开分离的正整数,依次表示前5名上学的小孩子的学号和总分。

输入输出样例

输入样例#1:

【输入样例1】
6
90 67 80
87 66 91
78 89 91
88 99 77
67 89 64
78 89 98
【输入样例2】
8
80 89 89
88 98 78
90 67 80
87 66 91
78 89 91
88 99 77
67 89 64
78 89 98

出口样例#1:

【输出样例1】
6 265
4 264
3 258
2 244
1 237
【输出样例2】
8 265
2 264
6 264
1 258
5 258

 1 #include<iostream>
 2 #include<cstdio>
 3 #include<cstring>
 4 #include<algorithm>
 5 using namespace std;
 6 struct node
 7 {
 8     int yuwen;
 9     int shuxue;
10     int yingyu;
11     int bianhao;
12     int zongfen;
13 }a[301];
14 int comp(const node &a ,const node & b)
15 {
16     if(a.zongfen!=b.zongfen)
17     return a.zongfen>b.zongfen;
18     if(a.yuwen!=b.yuwen)
19     return a.yuwen>b.yuwen;
20     else
21     return a.bianhao<b.bianhao;
22 }
23 
24 int main()
25 {
26     int n;
27     scanf("%d",&n);
28     for(int i=1;i<=n;i++)
29     {
30         scanf("%d%d%d",&a[i].yuwen,&a[i].shuxue,&a[i].yingyu);
31         a[i].bianhao=i;
32         a[i].zongfen=a[i].yuwen+a[i].shuxue+a[i].yingyu;
33     }
34     sort(a+1,a+n+1,comp);
35     for(int i=1;i<=5;i++)
36     {
37         printf("%d %d\n",a[i].bianhao,a[i].zongfen);
38     }
39     return 0;
40 }

 

输入输出样例

输入样例#1:

690 67 8087 66 9178 89 9188 99 7767 89 6478 89 98880 89 8988 98 7890 67 8087 66 9178 89 9188 99 7767 89 6478 89 98

出口样例#1:

6 2654 2643 2582 2441 2378 2652 2646 2641 2585 258

 1 #include<iostream> 2 #include<cstdio> 3 #include<cstring> 4 #include<algorithm> 5 using namespace std; 6 struct node 7 { 8     int yuwen; 9     int shuxue;10     int yingyu;11     int bianhao;12     int zongfen;13 }a[301];14 int comp(const node &a ,const node & b)15 {16     if(a.zongfen!=b.zongfen)17     return a.zongfen>b.zongfen;18     if(a.yuwen!=b.yuwen)19     return a.yuwen>b.yuwen;20     else21     return a.bianhao<b.bianhao;22 }23 24 int main()25 {26     int n;27     scanf("%d",&n);28     for(int i=1;i<=n;i++)29     {30         scanf("%d%d%d",&a[i].yuwen,&a[i].shuxue,&a[i].yingyu);31         a[i].bianhao=i;32         a[i].zongfen=a[i].yuwen+a[i].shuxue+a[i].yingyu;33     }34     sort(a+1,a+n+1,comp);35     for(int i=1;i<=5;i++)36     {37         printf("%d %d\n",a[i].bianhao,a[i].zongfen);38     }39     return 0;40 }

标题陈诉

某小学方今到手了一笔赞助,打算拿出里面有的为学习成绩优异的前5名学生发奖学金。期末,每一种学员都有3门课的大成:语文、数学、德文。先按总分从高到低排序,若是三个同学总分同样,再按语文战绩从高到低排序,要是三个同学总分和语文战绩都同样,那么鲜明学号小的同班
排在前方,那样,每个学生的排序是独一鲜明的。

职责:先依照输入的3门课的实际业绩总括总分,然后按上述法规排序,最后按名次顺序输出前五名名学员的学号和总分。注意,在前5著名高校友中,每一种人的奖学金都不一样样,因而,你不能够不严俊按上述法则排序。比如,在有些正确答案中,要是前两行的输出数据(每行输出五个数:学号、总分)
是:

7 279 5 279
这两行数据的含义是:总分最高的两个同学的学号依次是7号、5号。这两名同学的总分都是279 (总分等于输入的语文、数学、印度语印尼语三科成绩之和)
,但学号为7的学员语文战绩越来越高级中学一年级些。就算你的前两名的输出数据是:

5 279 7 279 则按输出错误管理,不能够得分。