行业资讯
📅 2026/7/28 14:27:52
牛客网:牛牛找工作
题目描述为了找到自己满意的工作牛牛收集了每种工作的难度和报酬。牛牛选工作的标准是在难度不超过自身能力值的情况下牛牛选择报酬最高的工作。在牛牛选定了自己的工作后牛牛的小伙伴们来找牛牛帮忙选工作牛牛依然使用自己的标准来帮助小伙伴们。牛牛的小伙伴太多了于是他只好把这个任务交给了你。输入描述:每个输入包含一个测试用例。每个测试用例的第一行包含两个正整数分别表示工作的数量N(N100000)和小伙伴的数量M(M100000)。接下来的N行每行包含两个正整数分别表示该项工作的难度Di(Di1000000000)和报酬Pi(Pi1000000000)。接下来的一行包含M个正整数分别表示M个小伙伴的能力值Ai(Ai1000000000)。保证不存在两项工作的报酬相同。输出描述:对于每个小伙伴在单独的一行输出一个正整数表示他能得到的最高报酬。一个工作可以被多个人选择。示例1输入复制3 31 10010 10001000000000 10019 10 1000000000输出复制10010001001import java.util.Scanner; /** * author * version 1.0 * date 2019/8/22 15:46 */ public class Main { public static void main(String[] args) { Scanner scanner new Scanner(System.in); String line1 scanner.nextLine(); String[] strings line1.split( ); int n Integer.parseInt(strings[0]); int m Integer.parseInt(strings[1]); int[] d new int[100005]; int[] p new int[100005]; int[] a new int[100005]; for (int i0;in;i){ String line scanner.nextLine(); String[] strings1 line.split( ); d[i] Integer.parseInt(strings1[0]); p[i] Integer.parseInt(strings1[1]); } String line scanner.nextLine(); String[] strings1 line.split( ); for (int i0;im;i){ a[i] Integer.parseInt(strings1[i]); } //按报酬进行冒泡排序 boolean flag true; for (int i0;i(n-1)flag;i){ flag false; for (int jn-2;ji;j--){ if (p[j]p[j1]){ int pn p[j]; p[j] p[j1]; p[j1] pn; int dn d[j]; d[j] d[j1]; d[j1] dn; flag true; } } } for (int i0;im;i){ for (int jn-1;j0;j--){ if (a[i]d[j]){ System.out.println(p[j]); break; } } } } }