CCCPaste

Untitled

import java.util.Collection;
import java.util.Arrays;
import java.util.Scanner;

public class MAin {
    private static int n;
    private static int[] niza;
    private static int[] dp;
    static int rec(int x) {
        if(x == 0) {
            return 0;
        }
        if(dp[x] != -1) {
            return dp[x];
        }
        int result = (int) 2e9;
        for(int i = 0; i < n; i++) {
            if(x - niza[i] >= 0) {
                result = Math.min(result, rec(x - niza[i]) + 1);
            }
        }
        dp[x] = result;
        return result;
    }
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        n = sc.nextInt();
        niza = new int[n];
        for(int i = 0; i < n; i++) {
            niza[i] = sc.nextInt();
        }
        int suma = sc.nextInt();
        dp = new int[suma + 1];
        for(int i = 0; i <= suma; i++) {
            dp[i] = -1; // ova ni kazuva deka ovaa rekurzija ne e presmetana
        }
        System.out.println(rec(suma));
    }

}
// 50- 10 - 20 = 20
// 60 + 100 +