PAT 1015 德才论 (25 分) Java实现

这一题建议不要使用java,

无论如何优化测试点2,3,4总是过不了,上网看别人的代码也没有一个能过的

在这里插入图片描述

import java.io.*;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;

/**
 * @date 2021-8-10 - 21:38
 * Created by Salmon
 * 2,3,4测试点怎么都过不了
 * 我是傻逼
 */
public class Main1015 {
    public static void main(String[] args) throws IOException {
        BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in));
        String[] strings = bufferedReader.readLine().split("\\s+");
        PrintWriter pw = new PrintWriter(new OutputStreamWriter(System.out));
        int low = Integer.parseInt(strings[1]);
        int high = Integer.parseInt(strings[2]);
        int n = 0;
        ArrayList<Student> student1 = new ArrayList<>();
        ArrayList<Student> student2 = new ArrayList<>();
        ArrayList<Student> student3 = new ArrayList<>();
        ArrayList<Student> student4 = new ArrayList<>();
        for(int i = 0; i < Integer.parseInt(strings[0]); i++){
            String[] s = bufferedReader.readLine().split("\\s+");
            int morality = Integer.parseInt(s[1]);
            int intell = Integer.parseInt(s[2]);
//            Student student = new Student();
//            student.setNumber(Integer.parseInt(s[0]));
//            student.setMorality(Integer.parseInt(s[1]));
//            student.setIntell(Integer.parseInt(s[2]));
//            student.setTotal(Integer.parseInt(s[1]) + Integer.parseInt(s[2]));

//            if(student.morality >= low && student.intell >= low){
            if(morality >= low && intell >= low){
                if(morality >= high && intell >= high){
                    Student student = new Student();
                    student.setNumber(Integer.parseInt(s[0]));
                    student.setMorality(Integer.parseInt(s[1]));
                    student.setIntell(Integer.parseInt(s[2]));
                    student.setTotal(Integer.parseInt(s[1]) + Integer.parseInt(s[2]));
                    student1.add(student);
                    n++;
                }else if(morality >= high && intell < high ){
                    Student student = new Student();
                    student.setNumber(Integer.parseInt(s[0]));
                    student.setMorality(Integer.parseInt(s[1]));
                    student.setIntell(Integer.parseInt(s[2]));
                    student.setTotal(Integer.parseInt(s[1]) + Integer.parseInt(s[2]));
                    student2.add(student);
                    n++;
                }else if((morality < high && intell < high) && (morality > intell)){
                    Student student = new Student();
                    student.setNumber(Integer.parseInt(s[0]));
                    student.setMorality(Integer.parseInt(s[1]));
                    student.setIntell(Integer.parseInt(s[2]));
                    student.setTotal(Integer.parseInt(s[1]) + Integer.parseInt(s[2]));
                    student3.add(student);
                    n++;
                }else {
                    Student student = new Student();
                    student.setNumber(Integer.parseInt(s[0]));
                    student.setMorality(Integer.parseInt(s[1]));
                    student.setIntell(Integer.parseInt(s[2]));
                    student.setTotal(Integer.parseInt(s[1]) + Integer.parseInt(s[2]));
                    student4.add(student);
                    n++;
                }
            }

        }


        Collections.sort(student1,new StudentCompare());
        Collections.sort(student2,new StudentCompare());
        Collections.sort(student3,new StudentCompare());
        Collections.sort(student4,new StudentCompare());



        pw.println(n);
        pw.flush();
        for(Student student : student1){
            //    System.out.println(student.number + " " + student.morality + " " + student.intell);
            pw.println(student.number + " " + student.morality + " " + student.intell);
            pw.flush();
        }
        for(Student student : student2){
            //    System.out.println(student.number + " " + student.morality + " " + student.intell);
            pw.println(student.number + " " + student.morality + " " + student.intell);
            pw.flush();
        }
        for(Student student : student3){
            //    System.out.println(student.number + " " + student.morality + " " + student.intell);
            pw.println(student.number + " " + student.morality + " " + student.intell);
            pw.flush();
        }
        for(Student student : student4){
            //    System.out.println(student.number + " " + student.morality + " " + student.intell);
            pw.println(student.number + " " + student.morality + " " + student.intell);
            pw.flush();
        }

    }

}

class StudentCompare implements Comparator<Student>{

    public int compare(Student o1, Student o2) {
        if(o1.getTotal() == o2.getTotal()){
            if(o1.getMorality() == o2.getMorality()){
                return o1.getNumber() - o2.getNumber();
            }else {
                return o2.getMorality() - o1.getMorality();
            }
        }
        return o2.getTotal() - o1.getTotal();
    }
}

class Student{
    int number;
    int morality;
    int intell;
    int total;

    public int getTotal() {
        return total;
    }

    public void setTotal(int total) {
        this.total = total;
    }

    public int getNumber() {
        return number;
    }

    public void setNumber(int number) {
        this.number = number;
    }

    public int getMorality() {
        return morality;
    }

    public void setMorality(int morality) {
        this.morality = morality;
    }

    public int getIntell() {
        return intell;
    }

    public void setIntell(int intell) {
        this.intell = intell;
    }
}


在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值