Edit

【pythonでABC175を解説】B - Making Triangle

問題概要

問題ページ

B - Making Triangle
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()

-Edit
-