Pagini recente » Cod sursa (job #2542931) | Cod sursa (job #2678042) | Cod sursa (job #334203) | Cod sursa (job #1871933)
#include <iostream>
#include <cstdio>
#define NMAX (100000 + 4)
using namespace std;
int v[NMAX], N, M, x, caz;
int cautbin(int x)
{
int start =0, step = 1;
for(; step<=N; step<<=1);
for(; step; step>>=1)
{
int index = start + step;
if(index > N) continue;
if(v[index] <= x) start = index;
}
return start;
}
int main() {
freopen("cautbin.in", "r", stdin);
freopen("cautbin.out", "w", stdout);
scanf("%d", &N);
for(int i=1; i<=N; ++i)
{
scanf("%d", &v[i]);
}
scanf("%d", &M);
while(M>0)
{
--M;
scanf("%d %d", &caz, &x);
switch(caz)
{
case 0:
if(v[cautbin(x)] == x)
{
printf("%d\n", cautbin(x));
}
else
printf("-1");
break;
case 1:
printf("%d\n", cautbin(x));
break;
case 2:
if(v[cautbin(x)] == x)
{
printf("%d\n", cautbin(x-1)+1);
}
else
printf("%d\n", cautbin(x)+1);
break;
}
}
return 0;
}