Pagini recente » Cod sursa (job #701086) | Cod sursa (job #1336412) | Cod sursa (job #694785) | Cod sursa (job #1413818) | Cod sursa (job #1974400)
#include <bits/stdc++.h>
using namespace std;
int N, M;
vector<int> V;
int main()
{
freopen("cautbin.in", "r", stdin);
freopen("cautbin.out", "w", stdout);
scanf("%d",&N);
V.resize(N+1);
for(int i = 1; i <= N; ++i)
scanf("%d", &V[i]);
scanf("%d", &M);
for(int i = 1; i <= M; ++i)
{
int t;
scanf("%d", &t);
if(t == 0) {
int x;
scanf("%d", &x);
int li = 1, lf = N, m, ans = -1;
while(li <= lf) {
m = li + ((lf - li) >> 1);
if(V[m] == x) {
ans = m;
li = m + 1;
continue;
}
if(V[m] < x)
li = m + 1;
else
lf = m - 1;
}
printf("%d\n", ans);
continue;
}
if(t == 1) {
int x;
scanf("%d", &x);
int li = 1, lf = N, m , ans = 1;
while(li <= lf) {
m = li + ((lf - li) >> 1);
if(V[m] <= x) {
ans = m;
li = m + 1;
}
else
lf = m - 1;
}
printf("%d\n", ans);
continue;
}
int x;
scanf("%d", &x);
int li = 1, lf = N, m , ans = N;
while(li <= lf) {
m = li + ((lf - li) >> 1);
if(V[m] >= x) {
ans = m;
lf = m - 1;
}
else
li = m + 1;
}
printf("%d\n", ans);
}
return 0;
}