def query_sum(seq, target):
def bsearch(l, r):
if r >= l:
mid = l + (r - l) // 2
s = sum(seq[mid:mid + 2])
if s == target:
return mid
elif s > target:
return bsearch(l, mid - 1)
else:
return bsearch(mid + 1, r)
else:
return -1
i = bsearch(0, len(seq) - 1)
if i < 0:
return False
print("Yes sum exist with pair {} {}".format(*seq[i:i + 2]))
return True
x = [1, 2, 3, 4, 5]
y = [1, 2, 4, 8, 16]
query_sum(x, 7)
query_sum(y, 3)
ZGVmIHF1ZXJ5X3N1bShzZXEsIHRhcmdldCk6CiAgICBkZWYgYnNlYXJjaChsLCByKToKICAgICAgICBpZiByID49IGw6CiAgICAgICAgICAgIG1pZCA9IGwgKyAociAtIGwpIC8vIDIKICAgICAgICAgICAgcyA9IHN1bShzZXFbbWlkOm1pZCArIDJdKQogICAgICAgICAgICBpZiBzID09IHRhcmdldDoKICAgICAgICAgICAgICAgIHJldHVybiBtaWQKICAgICAgICAgICAgZWxpZiBzID4gdGFyZ2V0OgogICAgICAgICAgICAgICAgcmV0dXJuIGJzZWFyY2gobCwgbWlkIC0gMSkKICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgIHJldHVybiBic2VhcmNoKG1pZCArIDEsIHIpCiAgICAgICAgZWxzZToKICAgICAgICAgICAgcmV0dXJuIC0xCiAgICBpID0gYnNlYXJjaCgwLCBsZW4oc2VxKSAtIDEpCiAgICBpZiBpIDwgMDoKICAgICAgICByZXR1cm4gRmFsc2UKICAgIHByaW50KCJZZXMgc3VtIGV4aXN0IHdpdGggcGFpciB7fSB7fSIuZm9ybWF0KCpzZXFbaTppICsgMl0pKQogICAgcmV0dXJuIFRydWUKCnggPSBbMSwgMiwgMywgNCwgNV0KeSA9IFsxLCAyLCA0LCA4LCAxNl0KCnF1ZXJ5X3N1bSh4LCA3KQpxdWVyeV9zdW0oeSwgMyk=