1+ import sys
2+ input = sys .stdin .readline
3+
4+ n = int (input ())
5+ nums = list (map (int , input ().strip ().split ()))
6+ ops = list (map (int , input ().strip ().split ()))
7+
8+ # ์ต๋๊ฐ๊ณผ ์ต์๊ฐ์ ๊ตฌํ๊ธฐ ์ํด ์ด๊ธฐ๊ฐ ์ค์
9+ max_result = - int (1e9 )
10+ min_result = int (1e9 )
11+
12+ def dfs (nums , index , current_result , plus , minus , multiply , divide ):
13+ global max_result , min_result
14+
15+ if index == len (nums ):
16+ # ๋ชจ๋ ์ซ์๋ฅผ ๋ค ์ฌ์ฉํ์ผ๋ฉด ์ต๋๊ฐ๊ณผ ์ต์๊ฐ ๊ฐฑ์
17+ max_result = max (max_result , current_result )
18+ min_result = min (min_result , current_result )
19+ return
20+
21+ if plus > 0 :
22+ dfs (nums , index + 1 , current_result + nums [index ], plus - 1 , minus , multiply , divide )
23+ if minus > 0 :
24+ dfs (nums , index + 1 , current_result - nums [index ], plus , minus - 1 , multiply , divide )
25+ if multiply > 0 :
26+ dfs (nums , index + 1 , current_result * nums [index ], plus , minus , multiply - 1 , divide )
27+ if divide > 0 :
28+ if current_result < 0 :
29+ # ์์์ผ ๋์ ๋๋์
์ฒ๋ฆฌ
30+ dfs (nums , index + 1 , - (- current_result // nums [index ]), plus , minus , multiply , divide - 1 )
31+ else :
32+ dfs (nums , index + 1 , current_result // nums [index ], plus , minus , multiply , divide - 1 )
33+
34+
35+
36+ # ์ด๊ธฐ๊ฐ์ ์ฒซ ๋ฒ์งธ ์ซ์, index๋ 1๋ถํฐ ์์
37+ dfs (nums , 1 , nums [0 ], ops [0 ], ops [1 ], ops [2 ], ops [3 ])
38+
39+ print (max_result )
40+ print (min_result )
41+
42+ '''
43+ # 3๋ฌ ์ ํ์ด
44+
45+ # ์
๋ ฅ๋ฐ๊ธฐ
46+ n = int(input()) # ์์ ๊ฐ์
47+ nums = list(map(int, input().split())) # ์์ด
48+ operator = list(map(int, input().split()))
49+
50+ # ์ต์๊ฐ, ์ต๋๊ฐ ์ด๊ธฐํ
51+ maxValue = int(-1e9)
52+ minValue = int(1e9)
53+
54+ def calculator(idx, res, add, sub, prd, div):
55+ global minValue, maxValue
56+
57+ if idx == n:
58+ # ์ต์๊ฐ๊ณผ ์ต๋๊ฐ ๊ฐฑ์
59+ maxValue = max(maxValue, res)
60+ minValue = min(minValue, res)
61+ return
62+
63+ if add > 0:
64+ calculator(idx + 1, res + nums[idx], add-1, sub, prd, div)
65+
66+ if sub > 0:
67+ calculator(idx + 1, res - nums[idx], add, sub-1, prd, div)
68+
69+ if prd > 0:
70+ calculator(idx + 1, res * nums[idx], add, sub, prd-1, div)
71+
72+ if div > 0:
73+ calculator(idx + 1, int(res / nums[idx]), add, sub, prd, div-1)
74+
75+ calculator(1, nums[0], operator[0], operator[1], operator[2], operator[3])
76+ print(maxValue)
77+ print(minValue)
78+ '''
0 commit comments