ABC071C-python
メモリーエラーが出たやり方
n = int(input())
m=10**9
exist=[0]*m
s_seihou=set()
s_tyouhou=set()
for i in range(n):
d= int(input())
exist[d] += 1
if exist[d] >= 4:
s_seihou.add(d)
elif exist[d] >= 2:
s_tyouhou.add(d)
seihou = max(s_seihou)**2
s_tyouhou_list=list(s_tyouhou)
tyouhou = s_tyouhou_list[-1] * s_tyouhou_list[-2]
print(max(seihou, tyouhou))
バケット法でやろうとしたら(案の定)10**9の部分でエラー
長方形と正方形で分けて考えていたが、関係なかった。
最も大きい同じ数字2組を単に探し出すだけの話だった。
n = int(input())
l=[int(x) for x in input().split()]
l.sort(reverse=True)
count=[0]*(l[0]+1)
a=[]
for i in range(n):
count[l[i]] += 1
if count[l[i]] == 2:
a.append(l[i])
if len(a) <= 1:
print(0)
elif count[a[0]] >= 4:
print(a[0] ** 2)
else:
print(a[0] * a[1])
これでもREが出た。pythonだと厳しい,,,???