题目名称 122. [NOIP 2007]奖学金
输入输出 pj07-1.in/out
难度等级 ★★
时间限制 1000 ms (1 s)
内存限制 128 MiB
测试数据 10
题目来源 Gravatarsywgz 于2008-09-22加入
开放分组 全部用户
提交状态
分类标签
NOIP/CSP 基本 排序 模拟
分享题解
通过:440, 提交:988, 通过率:44.53%
Gravatar牛先生 100 0.000 s 0.00 MiB C++
GravatarGaoErFu 100 0.000 s 0.00 MiB C++
GravatarRapiz 100 0.000 s 0.00 MiB C++
Gravatar丿Mht丶闪电 100 0.000 s 0.00 MiB C++
GravatarHyoi_0Koto 100 0.000 s 0.00 MiB C++
GravatarRegnig Etalsnart 100 0.000 s 0.00 MiB C++
GravatarShirry 100 0.000 s 0.00 MiB C++
Gravatarjoel 100 0.000 s 0.00 MiB C++
GravatarYoungsc 100 0.000 s 0.00 MiB C++
Gravatar2018noip必胜! 100 0.000 s 0.00 MiB C++
本题关联比赛
NOIP2007普及组(复现)
关于 奖学金 的近10条评论(全部评论)
这么水的两星题,捡了个好漏,简单冒泡就行了
Gravatar城南花已开
2020-08-03 22:31 23楼
写完此题的神犇们请快速跳转 1054 双倍经验
Gravatar夜莺
2020-02-01 14:39 22楼
回复 @2018noip必胜! : 你给的是错的
Gravatar135246
2019-03-04 19:55 21楼
#include <bits/stdc++.h>
using namespace std;
int main(void)
{ freopen("pj07-1.in","r",stdin);
freopen("pj07-1.out","w",stdout);
int n = 0,a[1000]={0},b=0,c=0;int m[1000],sum=0,sum2=0,s=0;
cin>>n;
for(int i = 1;i<n+1;i++)
{
cin>>a[i]>>b >>c ;
m[i]=a[i]+b+c;
}
for(int i = 1;i<6;i++)
{
for(int j = 1;j<n+1;j++)
{
if(m[j]>sum)
{
sum=m[j];sum2=a[j];s=j;
}
if(m[j]==sum&&a[j]>sum2)
{
sum=m[j];sum2=a[j];s=j;
}
}cout<<s<<" "<<m[s]<<endl;sum=0;sum2=0;m[s]=0;
}
}
Gravatar2018noip必胜!
2018-09-23 08:45 20楼
给萌新一个提示,此题不需要用for循环,comp()四个判断就可以;判断结束后什么都别加否则会错一个点,具体看我代码。
看着大佬说快排,手中写着sort+comp(),心中想着
Gravatar增强型图元文件
2018-08-14 23:06 19楼
刚开始学oi的时候水过的题......现在都一年过去了..........
GravatarJustWB
2017-09-09 13:26 18楼
结构体大法好
GravatarShirry
2017-07-05 12:09 17楼
回复 @GaoErFu :
+1;
sort大法好!
GravatarTbnlkegc
2017-03-11 11:15 16楼
算是个sort 的cmp函数的练习?
GravatarkZime
2017-02-11 19:58 15楼
我很好奇我以前为什么写不出来。。。。
GravatarHeHe
2017-02-11 15:11 14楼

122. [NOIP 2007]奖学金

★★   输入文件:pj07-1.in   输出文件:pj07-1.out   简单对比
时间限制:1 s   内存限制:128 MiB

【问题描述】

某小学最近得到了一笔赞助,打算拿出其中一部分为学习成绩优秀的前5名学生发奖学金。期末,每个学生都有3门课的成绩:语文、数学、英语。先按总分从高到低排序,如果两个同学总分相同,再按语文成绩从高到低排序,如果两个同学总分和语文成绩都相同,那么规定学号小的同学排在前面,这样,每个学生的排序是唯一确定的。

任务:先根据输入的3门课的成绩计算总分,然后按上述规则排序,最后按排名顺序输出前5名学生的学号和总分。注意,在前5名同学中,每个人的奖学金都不相同,因此,你必须严格按上述规则排序。例如,在某个正确答案中,如果前两行的输出数据(每行输出两个数:学号、总分)是:

7 279

5 279

这两行数据的含义是:总分最高的两个同学的学号依次是7号、5号。这两名同学的总分都是279(总分等于输入的语文、数学、英语三科成绩之和),但学号为7的学生语文成绩更高一些。如果你的前两名的输出数据是:

5 279

7 279

则按输出错误处理,不能得分。

【输入格式】

输入文件包含行n+1行。

第l行为一个正整数n,表示该校参加评选的学生人数。

第2到年n+l行,每行有3个用空格隔开的数字,每个数字都在0到100之间。第j行的3个数字依次表示学号为j-1的学生的语文、数学、英语的成绩。每个学生的学号按照输入顺序编号为1~n(恰好是输入数据的行号减1)。

所给的数据都是正确的,不必检验。

【输出格式】

输出文件共有5行,每行是两个用空格隔开的正整数,依次表示前5名学生的学号和总分。

【输入样例l】

6
90 67 80
87 66 91
78 89 91
88 99 77
67 89 64
78 89 98

【输出样例l】

6 265
4 264
3 258
2 244
1 237

【输入样例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

【输出样例2】

8 265
2 264
6 264
1 258
5 258

【数据规模与约定】

50%的数据满足:各学生的总成绩各不相同。

100%的数据满足:6<=n<=300。