Pagini recente » Cod sursa (job #2067799) | Cod sursa (job #1901830) | Cod sursa (job #1824099) | Cod sursa (job #3172090) | Cod sursa (job #1455521)
#include <cstdio>
#define NMAX 100007
using namespace std;
FILE *fin, *fout;
int n, v[NMAX], m, p, x, rez;
int cautbin(int v[], int value, int n)
{
int step = 1, first = 0;
for(; step<= n; step<<=1);
step>>=1;
for(;step; step>>=1)
{
int index = first + step;
if(index <= n)
{
if(v[index] <= value)
{
first = index;
}
}
}
return first;
}
int main()
{
fin = freopen("cautbin.in", "r", stdin);
fout = 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(v, x, n);
if(v[rez] == x) printf("%d\n", rez);
else printf("-1\n");
}
if(p == 1)
{
rez = cautbin(v, x, n);
printf("%d\n", rez);
}
if(p == 2)
{
rez = cautbin(v, x-1, n)+1;
printf("%d\n", rez);
}
}
fclose(fin);
fclose(fout);
return 0;
}