Pagini recente » Cod sursa (job #2001274) | Cod sursa (job #1651524) | Cod sursa (job #547896) | Cod sursa (job #3033206) | Cod sursa (job #2902098)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("cautbin.in");
ofstream fout("cautbin.out");
int n, m, v[100001], x;
char c;
int cb2(int x){
int poz = -1, st = 1, dr = n, mij;
while(st <= dr){
mij = (st + dr) / 2;
if(v[mij] >= x)
dr = mij - 1, poz = mij;
else if(v[mij] < x)
st = mij + 1;
}
return poz;
}
int cb1(int x){
int poz = -1, st = 1, dr = n, mij;
while(st <= dr){
mij = (st + dr) / 2;
if(v[mij] > x)
dr = mij - 1;
else if(v[mij] <= x)
st = mij + 1, poz = mij;
}
return poz;
}
int cb0(int x){
int poz = -1, st = 1, dr = n, mij;
while(st <= dr){
mij = (st + dr) / 2;
if(v[mij] <= x){
st = mij + 1;
if(v[mij] == x)
poz = mij;
}
else if(v[mij] > x)
dr = mij - 1;
}
return poz;
}
int main(){
fin >> n;
for(int i = 1; i <= n; i++)
fin >> v[i];
fin >> m;
for(int i = 1; i <= m; i++){
fin >> c >> x;
if(c == '0')
fout << cb0(x) << '\n';
else if(c == '1')
fout << cb1(x) << '\n';
else
fout << cb2(x) << '\n';
}
}