Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- """
- 1+2+3
- 6
- 2+2*2
- 8
- 4+5*5+4
- 81
- 4+5*5+4
- """
- expr_str = input()
- n = len(expr_str)
- def calc(a, b, op):
- if op == "+":
- return a + b
- elif op == "*":
- return a * b
- else:
- raise Exception("unknown op")
- def arifm(expr):
- MAX_VAL = 10000000
- MIN_VAL = -MAX_VAL
- m = (len(expr) + 1) // 2
- max_arr = []
- min_arr = []
- for i in range(0, m):
- max_arr.append([0] * m)
- min_arr.append([0] * m)
- max_arr[i][i] = int(expr[2 * i])
- min_arr[i][i] = int(expr[2 * i])
- for s in range(0, m - 1):
- for i in range(0, m - s - 1):
- j = i + s + 1
- min_val = MAX_VAL
- max_val = MIN_VAL
- for k in range(i, j):
- a = calc(min_arr[i][k], min_arr[k + 1][j], expr[2 * k + 1])
- b = calc(min_arr[i][k], max_arr[k + 1][j], expr[2 * k + 1])
- c = calc(max_arr[i][k], min_arr[k + 1][j], expr[2 * k + 1])
- d = calc(max_arr[i][k], max_arr[k + 1][j], expr[2 * k + 1])
- min_val = min(min_val, min(a, min(b, min(c, d))))
- max_val = max(max_val, max(a, max(b, max(c, d))))
- min_arr[i][j] = min_val
- max_arr[i][j] = max_val
- return max_arr[0][m - 1]
- print(arifm(expr_str))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement