滴滴2017校招演算法工程師筆試題--吃飯問題
阿新 • • 發佈:2019-01-10
import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner scan = new Scanner(System.in); while (scan.hasNext()) { int n = scan.nextInt(); int m = scan.nextInt(); ArrayList<Integer> desk = new ArrayList<Integer>(); for (int i = 0; i < n; i++) { desk.add(scan.nextInt()); } Collections.sort(desk); ArrayList<Group> customer = new ArrayList<Group>(); for (int i = 0; i < m; i++) { Group tem = new Group(); tem.setN(scan.nextInt()); tem.setC(scan.nextInt()); customer.add(tem); } Collections.sort(customer, new Comp().comparator); int res = 0; for(int i = 0; i < m; i++){ int loc = n; if( desk.isEmpty()){ break; } for(int j = desk.size()-1; j >= 0; j--){ if( desk.get(j) < customer.get(i).num){ break; }else{ loc = j; } } if( loc != n){ res += customer.get(i).cost; // System.out.println(i+ " " + customer.get(i).cost + "......" + loc); desk.remove(loc); } } System.out.println(res); } scan.close(); } } class Group { int num; int cost; public void setN(int n) { this.num = n; } public void setC(int c) { this.cost = c; } } class Comp{ Comparator<Group> comparator = new Comparator<Group>(){ public int compare(Group g1,Group g2){ if( g1.cost < g2.cost){ return 1; }else if( g1.cost > g2.cost){ return -1; }else{ return 0; } } }; }