Buggy python submission (verdict: Runtime Error):
n=int(input())
l=list(map(int,input().split()))
l.sort()

import bisect

ans=0
for i in range(n-2):
  for j in range(i+1,n-1):
    ind=bisect.bisect_left(temp,l[i]+l[j])
    ans+=n-ind
print(ans)

Fixed submission:
n=int(input())
l=list(map(int,input().split()))
l.sort()

import bisect

ans=0
for i in range(n-2):
  for j in range(i+1,n-1):
    ind=bisect.bisect_left(l,l[i]+l[j])
    ans+=ind-j-1
print(ans)

Buggy python submission (verdict: Time Limit Exceeded):
n=int(input())
l=list(map(int,input().split()))
l.sort()

import bisect

ans=0
for i in range(n-2):
  for j in range(i+1,n-1):
    temp=[l[k] for k in range(j+1,n) if k!=i and k!=j]
    ind=bisect.bisect_left(temp,abs(l[i]+l[j]))
    ans+=ind
print(ans)

Fixed submission:
n=int(input())
l=list(map(int,input().split()))
l.sort()

import bisect

ans=0
for i in range(n-2):
  for j in range(i+1,n-1):
    ind=bisect.bisect_left(l,l[i]+l[j])
    ans+=ind-j-1
print(ans)

Buggy python submission (verdict: Time Limit Exceeded):
n=int(input())
l=list(map(int,input().split()))
l.sort()

import bisect

ans=0
for i in range(n-2):
  for j in range(i+1,n-1):
    temp=[l[k] for k in range(j+1,n) if k!=i and k!=j]
    ind=bisect.bisect_left(temp,abs(l[i]+l[j]))
    ans+=ind
print(ans)

Fixed submission:
n=int(input())
l=list(map(int,input().split()))
l.sort()

import bisect

ans=0
for i in range(n-2):
  for j in range(i+1,n-1):
    ind=bisect.bisect_left(l,l[i]+l[j])
    ans+=ind-j-1
print(ans)

Buggy python submission (verdict: Time Limit Exceeded):
n=int(input())
l=list(map(int,input().split()))
l.sort()

ans=0

temp=[] #長辺とそれ以外の辺との長さの差を記録しておく

for i in range(2,n): #各長辺について調べる。

  maetonosa=l[i]-l[i-1]
  #今調べてる項の1つ前の項を含む組み合わせについて、
  #調べてる項との差を新たにtempに挿入
  for j in temp[:]:
    if j>maetonosa:
      ans+=1
      j-=maetonosa
    else:
      temp.remove(j)

  for j in range(i-1):
    temp2=l[i-1]+l[i-2-j] #1つ前の項と、(順番に小さくしてく)l[i-2-j]との和
    if temp2>l[i]:#temp2が長辺より大きいか調べる
      ans+=1 #大きいなら答えを1足す
      temp.append(temp2-l[i])
    else:
      break #それ以降を調べる必要がないためjについてのfor文を終了

print(ans)

Fixed submission:
n=int(input())
l=list(map(int,input().split()))
l.sort()

import bisect

ans=0
for i in range(n-2):
  for j in range(i+1,n-1):
    ind=bisect.bisect_left(l,l[i]+l[j])
    ans+=ind-j-1
print(ans)

Buggy python submission (verdict: Time Limit Exceeded):
n=int(input())
l=list(map(int,input().split()))
l.sort()

ans=0

temp=[] #長辺とそれ以外の辺との長さの差を記録しておく

for i in range(2,n): #各長辺について調べる。

  maetonosa=l[i]-l[i-1]
  #今調べてる項の1つ前の項を含む組み合わせについて、
  #調べてる項との差を新たにtempに挿入
  for j in temp[:]:
    if j>maetonosa:
      ans+=1
      j-=maetonosa
    else:
      temp.remove(j)

  for j in range(i-1):
    temp2=l[i-1]+l[i-2-j] #1つ前の項と、(順番に小さくしてく)l[i-2-j]との和
    if temp2>l[i]:#temp2が長辺より大きいか調べる
      ans+=1 #大きいなら答えを1足す
      temp.append(temp2-l[i])
    else:
      break #それ以降を調べる必要がないためjについてのfor文を終了

print(ans)

Fixed submission:
n=int(input())
l=list(map(int,input().split()))
l.sort()

import bisect

ans=0
for i in range(n-2):
  for j in range(i+1,n-1):
    ind=bisect.bisect_left(l,l[i]+l[j])
    ans+=ind-j-1
print(ans)

Buggy python submission (verdict: Time Limit Exceeded):
n=int(input())
l=list(map(int,input().split()))
l=sorted(l,reverse=True)

anset=set()


for i in range(n-2):
  flag=False
  for j in range(i+1,n-1):
    for k in range(j+1,n):
      if l[i]<l[j]+l[k]:
        temp=""
        temp+=str(l[i])+str(l[j])+str(l[k])
        #print(temp)
        anset.add(temp)
      else:#それ以降のj,kで三角形作れるのは無いので最初のfor文に戻る
        flag=True
    if flag==True:
      break

#ansetの長さを出力
print(len(anset))

Fixed submission:
n=int(input())
l=list(map(int,input().split()))
l.sort()

import bisect

ans=0
for i in range(n-2):
  for j in range(i+1,n-1):
    ind=bisect.bisect_left(l,l[i]+l[j])
    ans+=ind-j-1
print(ans)