Pagini recente » Cod sursa (job #1729955) | Cod sursa (job #1980295) | Cod sursa (job #2224974) | Cod sursa (job #2235593) | Cod sursa (job #1522407)
#include <cstdio>
using namespace std;
int n, vec[105], l;
int st, dr, mij;
int Operatia_1(int nr, int st = 0, int dr = n-1)
{
if (st > dr)
return dr;
mij = (st+dr)/2;
if (vec[mij] > nr)
return Operatia_1(nr, st, mij-1);
else
return Operatia_1(nr, mij+1, dr);
}
int Operatia_2(int nr, int st = 0, int dr = n-1)
{
if (st > dr)
return st;
mij = (st+dr)/2;
if (vec[mij] >= nr)
return Operatia_2(nr, st, mij-1);
else
return Operatia_2(nr, mij+1, dr);
}
void Citeste(int i=0)
{
if (i==n)
return;
scanf("%d ", &vec[i]);
Citeste(i+1);
}
void Read()
{
int elem, tip, nr, op;
scanf("%d\n", &n);
Citeste();
scanf("\n");
scanf("%d", &elem);
for (int i=1; i<=elem; i++)
{
scanf("%d %d\n", &tip, &nr);
if (tip==0)
{
op = Operatia_1(nr);
if (vec[op]!=nr)
printf("-1\n");
else
printf("%d\n", op+1);
}
else if (tip==1)
{
op = Operatia_1(nr);
printf("%d\n", op+1);
}
else if (tip==2)
{
printf("%d\n", Operatia_2(nr)+1);
}
}
}
int main()
{
freopen("cautbin.in", "r", stdin);
freopen("cautbin.out", "w", stdout);
Read();
return 0;
}