ABC
D
二分探索
ABC143 D - Triangles
https://atcoder.jp/contests/abc143/tasks/abc143_d (opens in a new tab)
茶色上位。二分探索。
三角形であるために以下の不等式を満足させる必要がある。
式が 3 つもあってややこしいが、これは という仮定をおくと、 のみ満たせばいい。
よって と を全探索するが、その際に を満たすように、つまり となるように探索し、 を満たす の個数を二分探索により求めれば良い。
NOTE はソート済みの の各インデックスに対応する要素のこと
import bisect
n = int(input())
l = sorted(map(int, input().split()))
ans = 0
for i in range(n):
for j in range(i + 1, n):
ans += bisect.bisect_right(l, l[i] + l[j]) - j - 1
print(ans)