AcWing 429. 奖学金(Java解法^ ^)
原题链接
简单
作者:
是晴天呀
,
2021-03-13 20:55:10
,
所有人可见
,
阅读 382
/**
核心思想:自定义类进行比较
*/
import java.util.Arrays;
import java.util.Scanner;
public class T429奖学金 {
static Scanner sc=new Scanner(System.in);
static int n=sc.nextInt();
static class CJ implements Comparable<CJ>{
int zong; //总分
int yv; //语文
int hao; //学号
public CJ(int zong,int yv,int hao) {
this.zong=zong;
this.yv=yv;
this.hao=hao;
}
public int compareTo(CJ o) {
if(this.zong==o.zong&&this.yv==o.yv) { //特判:当总分和语文都相等时,学号小的“大”
return o.hao-this.hao;
}else if(this.zong==o.zong){ //特判:当总分相等时,语文高的“大”
return this.yv-o.yv;
}else { //一般情况,总分高的“大”
return this.zong-o.zong;
}
}
}
public static void main(String[] args) {
CJ cc[]=new CJ[n];
for(int i=0;i<n;i++) {
int g1=sc.nextInt(); //语文
int g2=sc.nextInt(); //数学
int g3=sc.nextInt(); //英语
//总分,语文,学号
cc[i]=new CJ( g1+g2+g3, g1, i+1);
}
Arrays.sort(cc); //从小到大排序之后,用for循环倒着输出前5个即可
for(int i=cc.length-1;i>=cc.length-5;i--) {
System.out.println(cc[i].hao+" "+cc[i].zong);
}
}
}