import sys
def dfs(idx, now):
global min_result, max_result, cal
if idx == N:
min_result = min(min_result, now)
max_result = max(max_result, now)
return
else:
if cal[0] > 0:
cal[0] -= 1
dfs(idx+1, now+arr[idx])
cal[0] += 1
if cal[1] > 0:
cal[1] -= 1
dfs(idx+1, now-arr[idx])
cal[1] += 1
if cal[2] > 0:
cal[2] -= 1
dfs(idx+1, now*arr[idx])
cal[2] += 1
if cal[3] > 0:
cal[3] -= 1
dfs(idx+1, int(now/arr[idx]))
cal[3] += 1
N = int(sys.stdin.readline().rstrip())
arr = list(map(int, sys.stdin.readline().split()))
cal = list(map(int, sys.stdin.readline().split()))
min_result = 9999999999999
max_result = -9999999999999
dfs(1, arr[0])
print(max_result)
print(min_result)
알아두기
전역 변수는 전체 프로세스에서 딱 한개만 존재하는 것이고, 로컬 변수는 재귀 함수를 들어갈 때마다 새로 생성된다.