Pagini recente » Cod sursa (job #878525) | Cod sursa (job #269560) | Cod sursa (job #1011770) | Cod sursa (job #2693874) | Cod sursa (job #2672680)
# cautare binara
def cautare0(st, dr, target):
while st <= dr:
mid = (st+dr)/2
if v[mid] <= target:
st = mid+1
else:
dr = mid-1
if v[dr] == target:
return dr + 1
else:
return -1
def cautare1(st, dr, target):
while st <= dr:
mid = (st+dr)/2
if v[mid] <= target:
st = mid+1
else:
dr = mid-1
return dr + 1
def cautare2(st, dr, target):
while st <= dr:
mid = (st+dr)/2
if v[mid] < target:
st = mid+1
else:
dr = mid-1
return st + 1
with open("cautbin.in", "r") as fin:
sol = ""
n = int(fin.readline())
v = list(int(x) for x in fin.readline().split())
nr_op = int(fin.readline())
for i in range(nr_op):
aux = fin.readline().split()
tip = int(aux[0])
x = int(aux[1])
if tip == 0:
# cea mai mare pozitie pe care se afla un element cu valoarea x sau -1
sol += str(cautare0(0, n-1, x)) + "\n"
if tip == 1:
# cea mai mare pozitie pe care se afla un element cu valoarea mai mica sau egala cu x
sol += str(cautare1(0, n-1, x)) + "\n"
if tip == 2:
# cea mai mica pozitie pe care se afla un element cu valoarea mai mare sau egala cu x
sol += str(cautare2(0, n-1, x)) + "\n"
with open("cautbin.out", "w") as fout:
fout.write(sol)