Pagini recente » Cod sursa (job #2331731) | Cod sursa (job #165576) | Cod sursa (job #1718239) | Cod sursa (job #2473676) | Cod sursa (job #222372)
Cod sursa(job #222372)
#include <stdio.h>
long n, a[100001], no;
long binary_search(long val)
{
long i, step;
for (step = 1; step < n; step <<= 1);
for (i = 0; step; step >>= 1)
if (i + step < n && a[i + step] <= val)
i += step;
return i;
}
int main()
{
long i, o, p, in;
freopen("cautbin.in", "r", stdin);
freopen("cautbin.out", "w", stdout);
scanf("%ld\n", &n);
for (i=0; i<n; i++) scanf("%ld ", &a[i]);
scanf("%ld\n", &no);
for (i=0; i<no; i++)
{
scanf("%ld %ld\n", &o, &p);
if (o==0)
{
in=binary_search(p);
if (a[in]!=p) printf("-1\n");
else printf("%ld\n", in+1);
}
if (o==1)
{
in=binary_search(p);
if (a[in]!=p) printf("%ld\n", in+1);
else
{
while (a[in-1]==p) in--;
printf("%ld\n", in+1);
}
}
if (o==2)
{
in=binary_search(p);
if (a[in]==p) printf("%ld\n", in+1);
else printf("%ld\n", in+2);
}
}
return 0;
}