Pagini recente » Cod sursa (job #225517) | Cod sursa (job #2414301) | Cod sursa (job #2017724) | Rating UAIC BotoIasiByte (UAIC_RIP_Han_Solo) | Cod sursa (job #1657085)
#include <cstdio>
using namespace std;
int n, m;
int sir[100100];
int optiune, x;
void citire()
{
scanf("%d", &n);
for(int i = 0; i < n; i++)
{
scanf("%d", &sir[i]);
}
scanf("%d", &m);
}
void citesteIntrebare()
{
scanf("%d %d", &optiune, &x);
}
void rezolvaIntrebare()
{
int st = 0, dr = n - 1;
int nr;
if(optiune == 0)
{
while(st < dr - 1)
{
nr = (st + dr) / 2;
if(sir[nr] <= x)
{
st = nr;
}
else
{
dr = nr - 1;
}
}
if(x == sir[st])
{
printf("%d\n", st + 1);
}
else if(x == sir[dr])
{
printf("%d\n", dr + 1);
}
else
{
printf("-1\n");
}
}
else if(optiune == 1)
{
while(st < dr - 1)
{
nr = (st + dr) / 2;
if(sir[nr] <= x)
{
st = nr;
}
else
{
dr = nr - 1;
}
}
if(x >= sir[dr])
{
printf("%d\n", dr + 1);
}
else if(x >= sir[st])
{
printf("%d\n", st + 1);
}
else
{
printf("-1\n");
}
}
else if(optiune == 2)
{
while(st < dr - 1)
{
nr = (st + dr) / 2;
if(sir[nr] >= x)
{
dr = nr - 1;
}
else
{
st = nr;
}
}
if(x <= sir[st])
{
printf("%d\n", st + 1);
}
else if(x <= sir[dr])
{
printf("%d\n", dr + 1);
}
else
{
printf("-1\n");
}
}
}
int main()
{
freopen("cautbin.in", "r", stdin);
freopen("cautbin.out", "w", stdout);
citire();
for(int i = 0; i < m; i++)
{
citesteIntrebare();
rezolvaIntrebare();
}
return 0;
}