靈茶之二分02

gebeng發表於2024-04-01

靈茶之二分02

題目連結

https://codeforces.com/problemset/problem/1538/C

題目大意

輸入 T(≤104) 表示 T 組資料。所有資料的 n 之和 ≤2e5。 每組資料輸入 n(1≤n≤2e5) L R(1≤L≤R≤1e9) 和長為 n 的陣列 a(1≤a[i]≤1e9)。 輸出有多少對 (i, j) 滿足 i < j 且 L <= a[i] + a[j] <= R。

程式碼

from bisect import bisect_left,bisect_right
for _ in range(int(input())):
    n,L,R = map(int,input().split())
    a = [*map(int,input().split())]
    a.sort()
    ans = 0
    for i,x in enumerate(a):
        ans += (bisect_right(a,R - x,0,i) - bisect_left(a,L - x,0,i))
    print(ans)

相關文章