問題概要
問題ページ
-
B - Making Triangle
問題ページへ移動する
問題文
\(1, \cdots, N\) の番号がついた \(N\) 本の棒があります。棒 \(i (1 \leq i \leq N)\) の長さは \(L_i\) です。
このうち、三角形を作ることのできるような長さの異なる \(3\) 本の棒を選ぶ方法は何通りあるでしょうか。
つまり、\(3\) つの整数 \(1 \leq i < j < k \leq N\) の組であって次の \(2\) つの条件の両方を満たすものの個数を求めてください。
- \(L_i, L_j, L_k\) がすべて異なる
- \(3\) 辺の長さが \(L_i, L_j, L_k\) であるような三角形が存在する
制約
- \(1 \leq N \leq 100\)
- \(1 \leq L_i \leq 10^9\)
- 入力は全て整数である
問題の考察
ACコード
import sys
def solve():
input = sys.stdin.readline
mod = 10 ** 9 + 7
n = int(input().rstrip('\n'))
l = list(map(int, input().rstrip('\n').split()))
cnt = 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] and l[j] != l[k] and l[i] != l[k]:
s = sorted([l[i], l[j], l[k]])
if s[2] < s[0] + s[1]:
cnt += 1
print(cnt)
if __name__ == '__main__':
solve()