宋代史学家司马光在《资治通鉴》中有一段著名的“德才论”:“是故才德全尽谓之圣人,才德兼亡谓之愚人,德胜才谓之君子,才胜德谓之小人。凡取人之术,苟不得圣人,君子而与之,与其得小人,不若得愚人。”
现给出一批考生的德才分数,请根据司马光的理论给出录取排名。
输入格式:
输入第1行给出3个正整数,分别为:N(<=105),即考生总数;L(>=60),为录取最低分数线,即德分和才分均不低于L的考生才有资格被考虑录取;H(<100),为优先录取线——德分和才分均不低于此线的被定义为“才德全尽”,此类考生按德才总分从高到低排序;才分不到但德分到线的一类考生属于“德胜才”,也按总分排序,但排在第一类考生之后;德才分均低于H,但是德分不低于才分的考生属于“才德兼亡”但尚有“德胜才”者,按总分排序,但排在第二类考生之后;其他达到最低线L的考生也按总分排序,但排在第三类考生之后。
随后N行,每行给出一位考生的信息,包括:准考证号、德分、才分,其中准考证号为8位整数,德才分为区间[0, 100]内的整数。数字间以空格分隔。
输出格式:
输出第1行首先给出达到最低分数线的考生人数M,随后M行,每行按照输入格式输出一位考生的信息,考生按输入中说明的规则从高到低排序。当某类考生中有多人总分相同时,按其德分降序排列;若德分也并列,则按准考证号的升序输出。
输入样例:
14 60 80
64 90
90 60
85 80
85 80
80 85
82 77
83 76
90 78
75 79
59 90
88 45
80 100
90 99
66 60
输出样例:
12
90 99
80 100
85 80
85 80
80 85
90 78
83 76
82 77
90 60
66 60
75 79
64 90
本题用java写会运行超时。
1.容器排序
importjava.util.ArrayList;importjava.util.Arrays;importjava.util.Collections;importjava.util.List;importjava.util.Scanner;public classMainl {public static voidmain(String[] args) {
Scanner input= newScanner(System.in);intn,l,h;intsum;
n=input.nextInt();
l=input.nextInt();
h=input.nextInt();
String sto;intde;intcai;
List list1 = new ArrayList();
List list2 = new ArrayList();
List list3 = new ArrayList();
List list4 = new ArrayList();for(int i=0;i
sto=input.next();
de=input.nextInt();
cai=input.nextInt();
Stu stu= newStu(sto, de, cai);if(de>=h&&cai>=h){
list1.add(stu);
}if(de>=h&&cai=l){
list2.add(stu);
}if(de=l&&cai=l&&de>=cai){
list3.add(stu);
}if(de=l&&cai>=l&&de
list4.add(stu);
}
}long endTime =System.currentTimeMillis();
Collections.sort(list1);
Collections.sort(list2);
Collections.sort(list3);
Collections.sort(list4);
System.out.println(list1.size()+list2.size()+list3.size()+list4.size());for(int i=0;i
System.out.println(list1.get(i).sto+" "+list1.get(i).de+" "+list1.get(i).cai);
}for(int i=0;i
System.out.println(list2.get(i).sto+" "+list2.get(i).de+" "+list2.get(i).cai);
}for(int i=0;i
System.out.println(list3.get(i).sto+" "+list3.get(i).de+" "+list3.get(i).cai);
}for(int i=0;i
System.out.println(list4.get(i).sto+" "+list4.get(i).de+" "+list4.get(i).cai);
}
}
}class Stu implements Comparable{
String sto;intde;intcai;public Stu(String sto, int de, intcai) {super();this.sto =sto;this.de =de;this.cai =cai;
}
@Overridepublic intcompareTo(Stu o) {//TODO Auto-generated method Stub
int result = 0;
result= -(de+cai-o.de-o.cai);//总分降序
if(0==result){
result= -(de-o.de);//德分降序//System.out.println("总分相同:"+de+cai+result);
if(0==result){
result= sto.compareTo(o.sto);//学号升序//System.out.println("德分相同:"+sto.compareTo(sto));
}
}returnresult;
}
}
2.数组排序
importjava.util.Arrays;importjava.util.Scanner;public classMoral1 {public static voidmain(String[] args) {
Scanner input= newScanner(System.in);intn,l,h;intsum;
n=input.nextInt();
l=input.nextInt();
h=input.nextInt();
String sto;intde;intcai;int st1=0,st2=0,st3=0,st4=0;
Stud[] stu1= new Stud[];
Stud[] stu2= new Stud[];
Stud[] stu3= new Stud[];
Stud[] stu4= new Stud[];for(int i=0;i
sto=input.next();
de=input.nextInt();
cai=input.nextInt();
Stud stu= newStud(sto, de, cai);if(de>=h&&cai>=h){
stu1[st1++] =stu;
}if(de>=h&&cai=l){
stu2[st2++] =stu;
}if(de=l&&cai=l&&de>=cai){
stu3[st3++] =stu;
}if(de=l&&cai>=l&&de
stu4[st4++] =stu;
}
}
Arrays.sort(stu1,0, st1);
Arrays.sort(stu2,0, st2);
Arrays.sort(stu3,0, st3);
Arrays.sort(stu4,0, st4);
System.out.println(st1+st2+st3+st4);for(int i=0;i
System.out.println(stu1[i].sto+" "+stu1[i].de+" "+stu1[i].cai);
}for(int i=0;i
System.out.println(stu2[i].sto+" "+stu2[i].de+" "+stu2[i].cai);
}for(int i=0;i
System.out.println(stu3[i].sto+" "+stu3[i].de+" "+stu3[i].cai);
}for(int i=0;i
System.out.println(stu4[i].sto+" "+stu4[i].de+" "+stu4[i].cai);
}
}
}class Stud implements Comparable{
String sto;intde;intcai;public Stud(String sto, int de, intcai) {super();this.sto =sto;this.de =de;this.cai =cai;
}
@Overridepublic intcompareTo(Stud o) {//TODO Auto-generated method Stub
int result = 0;
result= -(de+cai-o.de-o.cai);//总分降序
if(0==result){
result= -(de-o.de);//德分降序//System.out.println("总分相同:"+de+cai+result);
if(0==result){
result= sto.compareTo(o.sto);//学号升序//System.out.println("德分相同:"+sto.compareTo(sto));
}
}returnresult;
}
}
都是相同的结果


版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/31313.html