ABC272C-python

n=int(input())
a=list(map(int, input().split()))
a.sort(reverse = True)
a_even =
a_odd =

for i in a:
    if i%2 == 0:
      a_even.append(i)
    else:
      a_odd.append(i)
a_even.sort(reverse=True)
a_odd.sort(reverse=True)
sum_even=a_even[0] + a_even[1] if len(a_even) >= 2 else -1 
sum_odd=a_odd[0] + a_odd[1] if len(a_odd) >= 2 else -1
print(max(sum_even, sum_odd))

 

普通に全探索したら計算量がオーバーしてしまう。

和が偶数-->偶数2つor奇数2つの組み合わせであるため、数列を奇数と偶数に分けてから計算することで計算量をO(n)に減らした。