Problem:


Score : 200 points

Problem Statement

We have sticks numbered 1, \cdots, N. The length of Stick i (1 \leq i \leq N) is L_i.

In how many ways can we choose three of the sticks with different lengths that can form a triangle?

That is, find the number of triples of integers (i, j, k) (1 \leq i < j < k \leq N) that satisfy both of the following conditions:

L_i, L_j, and L_k are all different.

There exists a triangle whose sides have lengths L_i, L_j, and L_k.

Constraints

1 \leq N \leq 100

1 \leq L_i \leq 10^9

All values in input are integers.

Input

Input is given from Standard Input in the following format:

N
L_1 L_2 \cdots L_N

Output

Print the number of ways to choose three of the sticks with different lengths that can form a triangle.

Sample Input 1

5
4 4 9 7 5

Sample Output 1

5

The following five triples (i, j, k) satisfy the conditions: (1, 3, 4), (1, 4, 5), (2, 3, 4), (2, 4, 5), and (3, 4, 5).

Sample Input 2

6
4 5 4 3 3 5

Sample Output 2

8

We have two sticks for each of the lengths 3, 4, and 5. To satisfy the first condition, we have to choose one from each length.

There is a triangle whose sides have lengths 3, 4, and 5, so we have 2 ^ 3 = 8 triples (i, j, k) that satisfy the conditions.

Sample Input 3

10
9 4 6 1 9 6 10 6 6 8

Sample Output 3

39

Sample Input 4

2
1 1

Sample Output 4

0

No triple (i, j, k) satisfies 1 \leq i < j < k \leq N, so we should print 0.



Sample input:
5
4 4 9 7 5


Sample output:
5

Submission status: Accepted

Solution code:
# compiled by pythran
"""
#pythran export main2()
import numpy as np


def solve(L):
    a = np.empty_like(L)
    b = np.empty_like(L)
    num = 0
    prev = L[0]
    count = 0
    for i in range(L.shape[0]):
        if L[i] == prev:
            count += 1
        else:
            a[num] = prev
            b[num] = count
            num += 1
            prev = L[i]
            count = 1
    else:
        a[num] = prev
        b[num] = count
        num += 1

    ret = 0
    for i in range(num - 2):
        for j in range(i + 1, num - 1):
            for k in range(j + 1, num):
                if a[k] < a[i] + a[j]:
                    ret += b[i] * b[j] * b[k]
                else:
                    break
    return ret


def calc(file_name):
    f = open(file_name)
    N = int(f.readline())
    L = np.array([int(x) for x in f.readline().split()])
    L = np.sort(L)
    ans = solve(L)
    print(ans)


def main2():
    calc('/dev/stdin')
"""
import os, sys
p = os.path.dirname(__file__)
pymain = os.path.join(p, "a.out")
if len(sys.argv) == 1:
    import subprocess
    if p == "":
        pymain = "./" + pymain
    subprocess.call(pymain)
else:
    import gzip, base64, stat
    gz = b'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'
    bin = gzip.decompress(base64.b64decode(gz))
    with open(pymain, "wb") as f:
        f.write(bin)
    os.chmod(pymain, 0o775)

Submission status: Accepted

Solution code:
n = int(input())
x = list(map(int,input().split(' ')))
ans = 0
for i in range(n):
    for j in range(i+1,n):
        for k in range(j+1,n):
                if x[i]+x[j] > x[k] and abs(x[i]-x[j]) < x[k] and x[i] != x[j] and x[j] != x[k] and x[i] != x[k]: ans += 1
print (ans)

Submission status: Accepted

Solution code:
n = int(input())
nums = input().split()
a = {}
for i in nums:
    if int(i) in a:
        a[int(i)] += 1
    else:
        a[int(i)] = 1
b, l = list(a.keys()), len(a.keys())
res = 0
p = []
for i in range(l):
    for j in range(i + 1, l):
        for k in range(j + 1, l):
            t = [b[i], b[j], b[k]]
            t.sort()
            if t[0] + t[1] > t[2]:
                res += 1 * a[t[0]] * a[t[1]] * a[t[2]]
print(res)

Submission status: Accepted

Solution code:
from itertools import combinations

N = int(input())
*L, = map(int, input().split())
ans = 0

for a, b, c in combinations(L, 3):
    if a==b or b==c or a==c:
        continue
    if a+b>c and b+c>a and a+c>b:
        ans += 1

print(ans)

Submission status: Accepted

Solution code:
N = int(input())
L = list(map(int, input().split()))

L = sorted(L)
L = L[::-1]

ans = 0

for i in range(N):
    Li = L[i]
    for j in range(i+1, N):
        Lj = L[j]
        for k in range(j+1, N):
            Lk = L[k]
            if Lj + Lk > Li:
                if Li not in [Lj, Lk]:
                    if Lj not in [Li, Lk]:
                        ans += 1


print(ans)

Submission status: Accepted

Solution code:
# -*- coding: utf-8 -*-
# モジュールのインポート
import itertools


def get_input() -> tuple:
    """
    標準入力を取得する.

    Returns:\n
        tuple: 標準入力
    """
    N = int(input())
    L = list(map(int, input().split()))

    return N, L


def main(L: list) -> None:
    """
    メイン処理.

    Args:\n
        L (list): 棒の長さ
    """
    # 求解処理
    ans = 0
    for L_i, L_j, L_k in itertools.combinations(L, 3):
        if (L_i == L_j) or (L_j == L_k) or (L_k == L_i):
            continue
        if L_i + L_j + L_k > 2 * max(L_i, L_j, L_k):
            ans += 1

    # 結果出力
    print(ans)


if __name__ == "__main__":
    # 標準入力を取得
    N, L = get_input()

    # メイン処理
    main(L)

Submission status: Accepted

Solution code:
N = int(input())
L = list(map(int,input().split()))
L.sort()
ans = 0
for i in range(N):
    for j in range(i+1,N):
        for k in range(j+1,N):
            if (L[i] == L[j] or L[j] == L[k] or L[i] == L[k]):
                continue
            else:
                if L[i]+L[j] > L[k] and L[j]+L[k] > L[i] and L[i]+L[k] > L[j]:
                    ans += 1
print(ans)

Submission status: Accepted

Solution code:
import itertools

n = int(input())
l1 = list(map(int, input().split()))
l2 = []
for i in range(0,len(l1),1):
  for j in range(i+1,len(l1),1):
    for k in range(j+1,len(l1),1):
      l2.append(sorted([l1[i],l1[j],l1[k]]))
count = 0
for i in range(len(l2)):
  if l2[i][0]+l2[i][1] > l2[i][2] and (l2[i][0] != l2[i][1] and l2[i][0] != l2[i][2] and l2[i][1] != l2[i][2]):
    count += 1
print(count)

Submission status: Accepted

Solution code:
n=int(input())
l=list(map(int,input().split()))
l.sort()
ans=0
for i in range(n-2):
  for j in range(i+1,n-1):
    for k in range(j+1,n):
      if l[i]==l[j] or l[i]==l[k] or l[j]==l[k]:continue
      if l[i]+l[j]>l[k]:
        ans+=1
print(ans)

Submission status: Accepted

Solution code:
n = int(input())
L = sorted(list(map(int,input().split())))
ans = 0
for i in range(n):
  for j in range(i+1,n):
    for k in range(j+1,n):      
      if L[i]+L[j] > L[k] and (L[i]!=L[j] and L[j]!=L[k]):
        ans += 1        
print(ans)

Submission status: Accepted

Solution code:
N = int(input())
L = list(map(int, input().split()))
ans = 0
L.sort()
#print(L)
for i in range(N-2):
	for j in range(i+1,N-1):
		if L[i]!=L[j]:	
			for k in range(j+1,N):
				if L[j]!=L[k]:
					if L[k]<L[i]+L[j]:
						ans += 1
print(ans)

Submission status: Accepted

Solution code:
N = int(input())
L = list(map(int,input().split()))

count =0


for i in range(0, N-1):
    for n in range(0,N-1):
        if(L[n]>L[n+1]):
            tmp = L[n]
            L[n] = L[n+1]
            L[n+1] = tmp            

for i in range(0,N):
    for n in range(0,N):
        for l in range(0,N):
            if i < n and n<l:
                if L[i] != L[n]:
                    if L[n] != L[l]:
                        if L[i] != L[l]:
                            if L[i]+L[n]> L[l]:
                                count +=1

print(count)

Submission status: Accepted

Solution code:
import collections
n = raw_input()
cc = collections.Counter(map(int, raw_input().split(' ')))
nums = sorted(cc.keys()) #his.sort()
res = 0
for i in range(len(nums)-2):
	for j in range(i+1, len(nums)-1):
		for k in range(j+1, len(nums)):
			if nums[i] + nums[j] > nums[k]:
				res += cc[nums[i]] * cc[nums[j]] * cc[nums[k]]
print res

Submission status: Accepted

Solution code:
n=int(input())
l=list(map(int,input().split()))

ans=0
for i in range(n):
  for j in range(n):
    for k in range(n):
      if i <= j <= k:
        if l[i]==l[j] or  l[j]==l[k] or l[i]==l[k]:
          continue
        if max(l[i],l[j],l[k]) < l[i] +l[j] + l[k] - max(l[i],l[j],l[k]):
          ans+=1
print(ans)

Submission status: Accepted

Solution code:
n = int(input())
l = list(map(int, input().split()))
ret = 0

for i in range(n-2):
  for j in range(i+1, n-1):
    for k in range(j+1, n):
      if l[i] + l[j] > l[k] and l[j] + l[k] > l[i] and l[k] + l[i] > l[j]:
        if l[i] != l[j] and l[j] != l[k] and l[k] != l[i]:
          ret += 1

print(ret)