大佬救救我,我用二分写的,没报超时但就过了两个点
查看原帖
大佬救救我,我用二分写的,没报超时但就过了两个点
626978
murmure_0楼主2022/6/5 17:00
def sl(x):
    l = 0
    r = n-1
    while l < r:
        mid = (l+r)>>1
        if l1[mid] >= x:
            r = mid
        else:
            l = mid + 1
    if l1[l] == x:
        return l
    else:
        return -1
def sr(x):
    l = 0
    r = n-1
    while l < r:
        mid = (l + r + 1) >> 1
        if l1[mid] <= x:
            l = mid
        else:
            r = mid - 1
    return l
n, c= map(int,input().split())
l1 = list(map(int,input().split()))
l1.sort()
ans = 0
lift1 = 0
right1 = 0
for i in range(n):
    lift1 = sl(abs(l1[i]-c))
    if lift1 != -1:
        right1 = sr(abs(l1[i]-c))
    ans += right1 - lift1
print(ans)

就过了两个点16分

2022/6/5 17:00
加载中...