Submission #1136606

#TimeUsernameProblemLanguageResultExecution timeMemory
1136606b1t_exeKnapsack (NOI18_knapsack)Java
Compilation error
0 ms0 KiB
import java.util.*;

public class Main {
    public static int f(int s, int n, int[][] arr, int i, int[][] memo) {
        if (i == n) return 0; // Base case: no items left to process
        if (memo[i][s] != -1) return memo[i][s]; // Return cached result

        int maxProfit = f(s, n, arr, i + 1, memo); // Skip current item
        int v = arr[i][0];
        int w = arr[i][1];
        int k = arr[i][2];

        // Consider taking current item up to its limit
        for (int count = 1; count <= k && count * w <= s; count++) {
            maxProfit = Math.max(maxProfit, count * v + f(s - count * w, n, arr, i + 1, memo));
        }

        memo[i][s] = maxProfit; // Cache the result
        return maxProfit;
    }

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int t = 1; // Number of test cases

        while (t-- > 0) {
            int x = sc.nextInt(); // Maximum weight capacity
            int n = sc.nextInt(); // Number of items
            int[][] arr = new int[n][3]; // Item details: value, weight, max quantity
            for (int i = 0; i < n; i++) {
                arr[i][0] = sc.nextInt(); // Value of item
                arr[i][1] = sc.nextInt(); // Weight of item
                arr[i][2] = sc.nextInt(); // Maximum quantity of item
            }

            int[][] memo = new int[n][x + 1];
            for (int[] row : memo) Arrays.fill(row, -1);

            System.out.println(f(x, n, arr, 0, memo));
        }
        sc.close();
    }
}

Compilation message (stderr)

knapsack.java:3: error: class Main is public, should be declared in a file named Main.java
public class Main {
       ^
1 error

=======