概述
1432: 土豪学长算成绩
时间限制: 1 Sec 内存限制: 128 MB题目描述
给协会里的同学排成绩对于土豪学长来说总是一个很麻烦的事情,因为土豪学长不会使用excel表格,所以每次他都是手工排序的。现在协会的人数越来越多,手工排序变的不现实了,他希望你能够帮他写一个程序给同学们拍名次。考试的科目有语文,数学,英语,物理,化学,生物。首先按照总分排序,总分一样的按照语文分排序,语文分一样的按照数学排序,以此类推,科目的优先级:语文,数学,英语,物理,化学,生物,如果几门课的分数都一样,那么按照学生的编号排序(序号小的排前面)
输入
有多组输入数据。 每组数据第一行一个数字n,表示学生的个数。接下来n行,每行6个整数,分别对应上面的六门科目。学生按照输入顺序从1到n编号。当n为0的时候结束。六门科目分数的范围从0到100(包含),0<=n<=10000
输出
学生的id按照排名输出,每组数据的输出占一行。从第一名到最后一名输出。
样例输入
3
100 100 100 100 100 100
99 99 99 99 99 99
88 88 88 88 88 88
0
样例输出
1 2 3
提示
来源
xzx
分析:
1、题目意思很好理解,开始的时候想的太复杂了。
2、简单题,调用STL排序函数,重写cmp就搞定啦!
LANGUAGE:C++
CODE:
#include <iostream>
#include <algorithm>
using namespace std;
struct node{
int num;
int g[6];
int sum;
};
int cmp(node a,node b)
{
if(a.sum==b.sum){
for(int i=0;i<6;i++){
if(a.g[i]!=b.g[i])
return a.g[i]<b.g[i];
}
return a.num<b.num;
}
else
return a.sum<b.sum;
}
int main()
{
int n;
while(cin>>n&&n!=0)
{
node q[10005];
for(int i=0;i<n;i++){
q[i].sum=0;
for(int j=0;j<6;j++){
cin>>q[i].g[j];
q[i].sum+=q[i].g[j];
}
q[i].num=i+1;
}
sort(q,q+n,cmp);
for(int i=n-1;i>=0;i--)
cout<<q[i].num<<' ';
cout<<endl;
}
return 0;
}
最后
以上就是个性山水为你收集整理的NEUQ 1432: 土豪学长算成绩的全部内容,希望文章能够帮你解决NEUQ 1432: 土豪学长算成绩所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复