import java.util.*; import java.util.Scanner; // 注意类名必须为 Main, 不要有任何 package xxx 信息 public class Main { public static void main(String[] args) { HashMap<Integer, Integer> map = new HashMap<>(); HashMap<Integer, Integer> map2 = new HashMap<>(); ArrayList<Integer> list = new ArrayList<>(); Scanner scanner = new Scanner(System.in); int count = scanner.nextInt(); int x = (int) Math.floor(scanner.nextInt() * 1.5); for (int i = 0; i < count; i++) { map.put(scanner.nextInt(), scanner.nextInt()); } for (Integer value : map.values()) { list.add(value); } Collections.sort(list, Collections.reverseOrder()); for (Map.Entry<Integer, Integer> entry : map.entrySet()) { if (entry.getValue() >= list.get(x - 1)) { map2.put(entry.getKey(), entry.getValue()); } } int c = 0; for (Integer i : list) { if (i >= list.get(x - 1)) c++; } System.out.println(list.get(x - 1) + " " + c); /*对map2排序:按照value从大到小排序 如果value值相同 key 按照从大到小排序 */ /*提取 Entry 集合:将 Map 的键值对(Entry)放入 List 中 自定义排序规则: 优先按 Value 降序(从大到小) 若 Value 相同,则按 Key 降序(从大到小)*/ // 将 Entry 存入 List List<Map.Entry<Integer, Integer>> entryList = new ArrayList<>(map2.entrySet()); Collections.sort(entryList, new Comparator<Map.Entry<Integer, Integer>>() { @Override public int compare(Map.Entry<Integer, Integer> e1, Map.Entry<Integer, Integer> e2) { // Value 降序:e2 与 e1 比较 int valueCompare = e2.getValue().compareTo(e1.getValue()); if (valueCompare != 0) { return valueCompare; } // Value 相同时,Key 降序 return e1.getKey().compareTo(Integer.valueOf(e2.getKey())); } }); // 3. 转换为 LinkedHashMap 保持顺序 Map<Integer, Integer> sortedMap = new LinkedHashMap<>(); for (Map.Entry<Integer, Integer> entry : entryList) { sortedMap.put(entry.getKey(), entry.getValue()); } for (Map.Entry<Integer, Integer> entry : sortedMap.entrySet()) { System.out.println(entry.getKey() + " " + entry.getValue()); } scanner.close(); } }