题解 | #排名#写个while循环就行

排名

https://www.nowcoder.com/practice/f7c80167c5b04fd2ac4b6d7080a73f01

import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
public class Main {
    private static class Student {
        private final String id;
        private final int score;
        private Student(String id, int score) {
            this.id = id;
            this.score = score;
        }
    }
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        while (sc.hasNextInt()) {
            int N = sc.nextInt();
            if (N == 0) break;
            int M = sc.nextInt();
            int G = sc.nextInt();
            int[] scores = new int[M + 1];
            for (int i = 1; i <= M; i++) {
                scores[i] = sc.nextInt();
            }
            List<Student> students = new ArrayList<>();
            while (N-- != 0) {
                String id = sc.next();
                int m = sc.nextInt();
                int sum = 0;
                while (m-- != 0) {
                    int index = sc.nextInt();
                    sum += scores[index];
                }
                if (sum >= G) students.add(new Student(id, sum));
            }
            System.out.println(students.size());
            students.stream().sorted((o1,
                                      o2) -> o1.score == o2.score ? o1.id.compareTo(o2.id) : o2.score -
                                     o1.score).forEach(student -> System.out.println(student.id + " " +
                                             student.score));
        }
    }
}

全部评论

相关推荐

不愿透露姓名的神秘牛友
07-03 18:13
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务