import java.util.Arrays; import java.util.Comparator; import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); int n; long d; n = scanner.nextInt(); d = scanner.nextLong(); Bank [] banks = new Bank [n]; for (int i = 0; i < n; i++) { long a = scanner.nextLong(); long b = scanner.nextLong(); banks[i] = new Main.Bank(a,b); } //按钱逆排序,钱最多的在最前面,之后只要从最前面往后开始找符合距离d的就行 Arrays.sort(banks, Comparator.comparingLong(o -> -1*o.money)); long res = 0; for (int i = 0; i < banks.length; i++) { for (int j = i+1; j < banks.length; j++) { if (Math.abs(banks[j].position - banks[i].position) >= d) { res = Math.max(res, banks[i].money + banks[j].money); break; //因为是按钱逆序的,所以最先找到的就是最大的 } } } System.out.println(res); scanner.close(); } static class Bank{ private long position; private long money; public Bank() { super(); } public Bank(long position, long money) { super(); this.position = position; this.money = money; } } }
点赞 2

相关推荐

joecii:如果没有工资,那可能没有工资是这家公司最小的问题了
找实习记录
点赞 评论 收藏
分享
牛客网
牛客网在线编程
牛客网题解
牛客企业服务