Pagini recente » Cod sursa (job #2489798) | Cod sursa (job #1372667) | Cod sursa (job #2083254) | Cod sursa (job #897299) | Cod sursa (job #1953913)
#include <iostream>
#include <cstdio>
#define N 100005
using namespace std;
int n, vec[N], x, p;
void afisare(int poz)
{
if(!p)
{
if(vec[poz] == x)
{
printf("%d\n", poz);
}
else
{
printf("-1\n");
}
}
if(p == 1)
{
while(vec[poz] <= x)
{
poz++;
}
printf("%d\n", poz - 1);
}
if(p == 2)
{
while(vec[poz] >= x)
{
poz--;
}
printf("%d\n", poz + 1);
}
}
void cautare_binara(int st, int dr)
{
if(st == dr)
{
afisare(st);
return;
}
int mij = (st + dr) >> 1;
if(x <= mij)
{
cautare_binara(st, mij);
}
else
{
cautare_binara(mij + 1, dr);
}
}
void citire()
{
scanf("%d\n", &n);
for(int i = 1 ; i <= n ; ++i)
{
scanf("%d ", &vec[i]);
}
int tmp;
scanf("%d\n", &tmp);
for(int i = 0 ; i < tmp ; ++i)
{
scanf("%d %d\n", &p, &x);
cautare_binara(1,n);
}
}
int main()
{
freopen("cautbin.in","r",stdin);
freopen("cautbin.out","w",stdout);
citire();
return 0;
}