牛客德才论习题
按照讨论中的高手答案写了一遍,可是运行总是通不过,不知道原因,这次的测试例子数量很庞大,数据到达了100000个,这道题用到了util包中的treeset和comparator,正好熟悉一下。
package niuke;
import java.util.Comparator;
import java.util.Scanner;
import java.util.TreeSet;
public class DeCai {
static class student{
int id,de,cai,total;
public student(int id,int de,int cai) {
super();
this.id = id;
this.de = de;
this.cai = cai;
this.total = de+cai;
}
}
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
Comparator<student> comparator = new Comparator<student>() {
@Override
public int compare(student s1, student s2) {
if (s2.total!=s1.total) {
return s2.total-s1.total;
}else if (s2.de!=s1.de) {
return s2.de - s1.de;
}else {
return s1.id - s2.id;
}
}
};
TreeSet<student> tree1 = new TreeSet<>(comparator);
TreeSet<student> tree2 = new TreeSet<>(comparator);
TreeSet<student> tree3 = new TreeSet<>(comparator);
TreeSet<student> tree4 = new TreeSet<>(comparator);
int n = scanner.nextInt();
int l = scanner.nextInt();
int h = scanner.nextInt();
while (n>0) {
int id = scanner.nextInt();
int de = scanner.nextInt();
int cai = scanner.nextInt();
student s = new student(id, de, cai);
if (s.de>=l&&s.cai>=l) {
if (s.de>=h&&s.cai>=h) {
tree1.add(s);
}else if (s.de>=h) {
tree2.add(s);
}else if (s.de>cai) {
tree3.add(s);
}else {
tree4.add(s);
}
}
n--;
}
System.out.println(tree1.size()+tree2.size()+tree3.size()+tree4.size());
for (student s : tree1) {
System.out.println(s.id+" "+s.de+" "+s.cai);
}
for (student s : tree2) {
System.out.println(s.id+" "+s.de+" "+s.cai);
}
for (student s : tree3) {
System.out.println(s.id+" "+s.de+" "+s.cai);
}
for (student s : tree4) {
System.out.println(s.id+" "+s.de+" "+s.cai);
}
}
}