Pagini recente » Cod sursa (job #2339287) | Cod sursa (job #477909) | Cod sursa (job #313886) | Cod sursa (job #652696) | Cod sursa (job #3165346)
#include <stdio.h>
#include <stdlib.h>
#define maxim 100005
int a[maxim], n;
int tip, x, i, copie_step;
int main(void)
{
freopen("cautbin.in", "r", stdin);
freopen("cautbin.out", "w", stdout);
scanf("%d", &n);
for(int i = 1; i <= n; i++)
scanf("%d", &a[i]);
int step;
for(step = 1; step <= n; step<<=1);
int m;
scanf("%d", &m);
for(; m; --m)
{
scanf("%d%d", &tip, &x);
if(tip < 2)
{
for(copie_step = step, i = 0; copie_step; copie_step>>=1)
if(i + copie_step <= n && a[i + copie_step] <= x)
i = i + copie_step;
if(tip == 0 && a[i] != x)
printf("-1\n");
else
printf("%d\n", i);
continue;
}
for(copie_step = step, i = n; copie_step; copie_step>>=1)
if(i - copie_step > 0 && a[i - copie_step] >=x)
i = i - copie_step;
printf("%d\n", i);
}
return 0;
}