https://www.acmicpc.net/problem/1744
1️⃣ 0, 1숫자를 유심히 고려 해 보아야 한다.
0은 곱해주면 음수를 제거 할 수 있는 수로 사용이 가능
1은 양수와 곱해주면 오히려 값이 줄어듬으로 그냥 있는 수대로 더해주는 것이 최대이다.
이에 따라, 1보다 작은 수와 1보다 큰 수로 나눠준다.
2️⃣ 1보다 작은 수는 오름차순 순으로 쌍을 지어주며 곱해주고 최종 답에 더해준다.
3️⃣ 1보다 큰 수는 내림차순 순으로 쌍을 지어주며 곱해주고 최종 답에 더해준다.
4️⃣ 1이 나온 수 만큼 최종 답에 더해준다.
if __name__ == '__main__':
N = int(input())
num_arr = [int(input()) for _ in range(N)]
arr1 = [i for i in num_arr if i > 1]
arr2 = [i for i in num_arr if i < 1]
ans = 0
one_check = num_arr.count(1)
arr1.sort(key=lambda x: -x)
arr2.sort(key=lambda x: x)
if len(arr1) == 1:
ans += arr1[-1]
else:
for i in range(0, len(arr1), 2):
if i == len(arr1) - 1:
break
ans += (arr1[i] * arr1[i + 1])
if len(arr1) % 2 == 1:
ans += arr1[-1]
if len(arr2) == 1:
ans += arr2[-1]
else:
for i in range(0, len(arr2), 2):
if i == len(arr2) - 1:
break
ans += (arr2[i] * arr2[i + 1])
if len(arr2) % 2 == 1:
ans += arr2[-1]
ans += one_check
print(ans)