Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.util.*;
- class Main {
- static int max = -1000000000;
- static int min = 1000000000;
- public static void main(String[] args) {
- Scanner sc = new Scanner(System.in);
- int n = sc.nextInt();
- int[] a = new int[n];
- for (int z = 0; z < n; z++) {
- a[z] = sc.nextInt();
- }
- int add = sc.nextInt();
- int sub = sc.nextInt();
- int mul = sc.nextInt();
- int div = sc.nextInt();
- ad(a, a[0], 1, n - 1, add, sub, mul, div);
- su(a, a[0], 1, n - 1, add, sub, mul, div);
- mu(a, a[0], 1, n - 1, add, sub, mul, div);
- di(a, a[0], 1, n - 1, add, sub, mul, div);
- System.out.println(max);
- System.out.println(min);
- sc.close();
- }
- private static void mu(int[] a, int cur, int j, int k, int add, int sub, int mul, int div) {
- if (k == 0) {
- max = Math.max(cur, max);
- min = Math.min(cur, min);
- } else if (mul != 0) {
- ad(a, cur * a[j], j + 1, k - 1, add, sub, mul - 1, div);
- su(a, cur * a[j], j + 1, k - 1, add, sub, mul - 1, div);
- mu(a, cur * a[j], j + 1, k - 1, add, sub, mul - 1, div);
- di(a, cur * a[j], j + 1, k - 1, add, sub, mul - 1, div);
- }
- }
- private static void di(int[] a, int cur, int j, int k, int add, int sub, int mul, int div) {
- if (k == 0) {
- max = Math.max(cur, max);
- min = Math.min(cur, min);
- } else if (div != 0) {
- ad(a, cur / a[j], j + 1, k - 1, add, sub, mul, div - 1);
- su(a, cur / a[j], j + 1, k - 1, add, sub, mul, div - 1);
- mu(a, cur / a[j], j + 1, k - 1, add, sub, mul, div - 1);
- di(a, cur / a[j], j + 1, k - 1, add, sub, mul, div - 1);
- }
- }
- private static void su(int[] a, int cur, int j, int k, int add, int sub, int mul, int div) {
- if (k == 0) {
- max = Math.max(cur, max);
- min = Math.min(cur, min);
- } else if (sub != 0) {
- ad(a, cur - a[j], j + 1, k - 1, add, sub - 1, mul, div);
- su(a, cur - a[j], j + 1, k - 1, add, sub - 1, mul, div);
- mu(a, cur - a[j], j + 1, k - 1, add, sub - 1, mul, div);
- di(a, cur - a[j], j + 1, k - 1, add, sub - 1, mul, div);
- }
- }
- private static void ad(int[] a, int cur, int j, int k, int add, int sub, int mul, int div) {
- if (k == 0) {
- max = Math.max(cur, max);
- min = Math.min(cur, min);
- } else if (add != 0) {
- ad(a, cur + a[j], j + 1, k - 1, add - 1, sub, mul, div);
- su(a, cur + a[j], j + 1, k - 1, add - 1, sub, mul, div);
- mu(a, cur + a[j], j + 1, k - 1, add - 1, sub, mul, div);
- di(a, cur + a[j], j + 1, k - 1, add - 1, sub, mul, div);
- }
- }
- }
Add Comment
Please, Sign In to add comment