Pagini recente » Cod sursa (job #940056) | Profil halfbloodstranger | Cod sursa (job #1022950) | Profil M@2Te4i | Cod sursa (job #1503043)
#include <cstdio>
#define NMAX 100007
using namespace std;
int n, m, v[NMAX], p, x, rez;
int cautbin(int value)
{
int step = 1, start = 0;
for(;step<= n; step<<=1);
step >>=1;
for(;step; step>>=1)
{
int index = start + step;
if(index <= n)
{
if(v[index] <= value)
{
start = index;
}
}
}
return start;
}
int main()
{
freopen("cautbin.in", "r", stdin);
freopen("cautbin.out", "w", stdout);
scanf("%d", &n);
for(int i = 1; i<= n; i++) scanf("%d", &v[i]);
scanf("%d", &m);
for(int i = 1; i<= m; i++)
{
scanf("%d%d", &p, &x);
if(p == 0)
{
rez = cautbin(x);
if(v[rez] == x) printf("%d\n", rez);
else printf("-1\n");
}
if(p == 1)
{
rez = cautbin(x);
printf("%d\n", rez);
}
if(p == 2)
{
rez = cautbin(x-1)+1;
printf("%d\n", rez);
}
}
return 0;
}