Cod sursa(job #247059)

Utilizator wickedmanCristian Strat wickedman Data 22 ianuarie 2009 03:54:37
Problema Numarare triunghiuri Scor 0
Compilator py Status done
Runda Arhiva de probleme Marime 0.83 kb
input = open("nrtri.in").readlines()
n = int(input[0])
sticks = map(int, input[1].split(" "))
assert len(sticks) == n

sticks.sort()
c = [0] * 60001
for s in sticks:
  c[s] += 1
l = [0] * 60001
for i in xrange(1, len(l)):
  l[i] = l[i - 1] + c[i]
sticks = list(set(sticks))
sticks.sort()

res = 0
for i in xrange(0, len(sticks)):
  for j in xrange(i + 1, len(sticks)):
    res += (l[sticks[i] + sticks[j]] - l[sticks[j]]) * c[sticks[i]] * c[sticks[j]]
    res += c[sticks[i]] * c[sticks[j]] * (c[sticks[j]] - 1) / 2
for i in xrange(0, len(sticks)):
  if c[sticks[i]] < 2:
    continue
  res += (l[2*sticks[i]] - l[sticks[i]]) * c[sticks[i]] * (c[sticks[i]] - 1) / 2
  if c[sticks[i]] < 3:
    continue
  for k in xrange(1, c[sticks[i]] - 1):
    res += (c[sticks[i]] - k) * (c[sticks[i]] - k - 1) / 2

open("nrtri.out", "w").write("%ld\n" % res)