| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556 | import java.util.Arrays;import java.util.Comparator;import java.util.Scanner;public class Main {    static class Pair {        int time;        int rank;        Pair(int time, int rank) {            this.time = time;            this.rank = rank;        }    }    public static void main(String[] args) { // 200*xi + 3*yi        Scanner scanner = new Scanner(System.in);        int n = scanner.nextInt(), m = scanner.nextInt();        Pair[] mach = new Pair[n];        Pair[] task = new Pair[m];        for (int i = 0; i < n; i++) {            mach[i] = new Pair(scanner.nextInt(), scanner.nextInt());        }        for (int i = 0; i < m; i++) {            task[i] = new Pair(scanner.nextInt(), scanner.nextInt());        }        Comparator cmp = new Comparator<Pair>() {            @Override            public int compare(Pair p1, Pair p2) {                if (p1.time != p2.time)                    return p2.time - p1.time;                return p2.rank - p1.rank;            }        };        Arrays.sort(task, cmp);        Arrays.sort(mach, cmp);        int cnt = 0, gain = 0, idx = 0;        int[] level = new int[101];        for (Pair t : task) {            while (idx < n && t.time <= mach[idx].time) {                level[mach[idx].rank]++;                idx++;            }            for (int i = t.rank; i < 101; i++) {                if (0 < level[i]) {                    level[i]--;                    cnt++;                    gain += 200 * t.time + 3 * t.rank;                    break;                }            }        }        System.out.printf("%d %d\n", cnt, gain);        scanner.close();    }}
 |