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だと厳しい,,,???