6 条题解
-
2
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
- 上传者