CSP 202303-2 垦田计划

黎 浩然/ 16 8 月, 2023/ 算法/ALGORITHMS/ 0 comments

Java:100/100

import java.util.Arrays;
import java.util.Comparator;
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {

        Scanner input = new Scanner(System.in);
        int n = input.nextInt();
        long m = input.nextInt();
        int k = input.nextInt();
        int [] t = new int[n];
        int [] c = new int[n];

        for (int i = 0; i < n; i++) {
            t[i] = input.nextInt();
            c[i] = input.nextInt();
        }

        Integer [] indexArray = new Integer[n];
        for (int i = 0; i < n; i++) {
            indexArray[i] = i;
        }
        Arrays.sort(indexArray, new Comparator<Integer>() {
            @Override
            public int compare(Integer o1, Integer o2) {
                return Integer.compare(t[o2], t[o1]);
            }
        });

        int [] sortedT = new int[n];
        int [] sortedC = new int[n];
        for (int i = 0; i < n; i++) {
            sortedT[i] = t[indexArray[i]];
            sortedC[i] = c[indexArray[i]];
        }

        int cost2Minus1 = 0;
        for (int i = 0; i < n; i++) {
            if (sortedT[i] <= k) {
                System.out.println(k);
                System.exit(0);
            }

            int nextDay = k;
            if (i + 1 < n) {
                nextDay = Math.max(sortedT[i + 1], k);
            }

            cost2Minus1 += sortedC[i];

            for (int j = 0; j < sortedT[i] - nextDay; j++) {
                if (m < cost2Minus1) {
                    System.out.println(sortedT[i] - j);
                    System.exit(0);
                }
                m -= cost2Minus1;
            }
        }

        System.out.println(k);
    }
}
Share this Post

Leave a Comment

您的邮箱地址不会被公开。 必填项已用 * 标注

*
*