6 条题解

  • 2
    @ 2024-5-23 14:23:18
    data=list(map(int,input().strip().split()))
    a,b=map(int,input().split())
    
    def first(key):
        i=0;j=len(data)-1
        while i<=j:
            m=(i+j)//2
            if data[m]<=key:
                j=m-1#找到key时,任选则向左走(找到第一个key)
            else:
                i=m+1
        return i#所以,j 最后的位置会是 key 的位置 -1,而 i 则刚刚好是答案。因此这里也可写 j+1
    
    def last(key):
        i=0;j=len(data)-1
        while i<=j:
            m=(i+j)//2
            if data[m]<key:
                j=m-1
            else:
                i=m+1#找到key时,任选则向右走(找到最后一个key)
        return j
    
    pos1=first(b)
    pos2=last(a)
    #print(pos1)
    #print(pos2)
    for i in range(pos2,pos1,-1):
        print(data[i],end=" ")
    if pos1>pos2:
        print("-1")
    else:
        print(data[pos1])
        print(pos2-pos1+1)
    

    信息

    ID
    802
    时间
    1000ms
    内存
    256MiB
    难度
    7
    标签
    递交数
    1191
    已通过
    237
    上传者