AtCoder Regular Contest 081: C - Make a Rectangle

,

http://arc081.contest.atcoder.jp/tasks/arc081_a

solution

ふたつ以上ある数で最も大きいもの、そのふたつを除いての最も大きいものを取ってきてその積。 $O(N \log N)$でsortしていい感じにする。

unordered_mapするかstackでいい感じにやると$O(N)$だが不要。

implementation

#!/usr/bin/env python3
n = int(input())
a = list(map(int, input().split()))
a.sort()
b = [ 0, 0 ]
i = 0
while i + 1 < n:
    if a[i] == a[i + 1]:
        b += [ a[i] ]
        i += 2
    else:
        i += 1
print(b[-2] * b[-1])