Pagini recente » Cod sursa (job #2505091) | Cod sursa (job #1999580) | Cod sursa (job #531120) | Cod sursa (job #264005) | Cod sursa (job #1954706)
#include <iostream>
#include <cstdio>
#define N 100005
using namespace std;
int n, vec[N], x, caz;
void afisare(int poz)
{
if(!caz)
{
if(vec[poz] == x)
{
while(vec[poz] == x)
{
poz++;
}
printf("%d\n", poz - 1);
}
else
{
printf("-1\n");
}
}
if(caz == 1)
{
while(vec[poz] <= x)
{
poz++;
}
printf("%d\n", poz - 1);
}
if(caz == 2)
{
printf("%d\n", poz);
}
}
void cautare_binara(int st, int dr)
{
if(st == dr)
{
afisare(st);
return;
}
int mij = st + ((dr - st) >> 1);
if(x <= vec[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", &caz, &x);
cautare_binara(1,n);
}
}
int main()
{
freopen("cautbin.in","r",stdin);
freopen("cautbin.out","w",stdout);
citire();
return 0;
}