Pagini recente » Cod sursa (job #1435526) | Cod sursa (job #756950) | Cod sursa (job #2292161) | Cod sursa (job #2257591) | Cod sursa (job #1799719)
#include <cstdio>
#include <algorithm>
using namespace std;
int tip, x, n, m, a[100002];
inline int CBIN(int x){
int st = 1, dr = n;
while(st <= dr){
int mij = (st + dr) / 2;
if(x < a[mij])
dr = mij - 1;
else
st = mij + 1;
}
return dr;
}
int main()
{
freopen("cautbin.in", "r", stdin);
freopen("cautbin.out", "w", stdout);
scanf("%d", &n);
for(int i = 1; i <= n ; ++i)
scanf("%d", &a[i]);
scanf("%d", &m);
for(int j = 1; j <= m ; ++j){
scanf("%d%d", &tip, &x);
if(tip == 0){
int P = CBIN(x);
if(a[P] == x) printf("%d\n", P);
else printf("-1\n");
continue ;
}
if(tip == 2){
int P = lower_bound(a + 1, a + n + 1, x) - a;
printf("%d\n", P);
continue ;
}
int P = CBIN(x);
printf("%d\n", P);
}
return 0;
}