Pagini recente » Cod sursa (job #2613337) | Cod sursa (job #2801186) | Cod sursa (job #1838685) | Cod sursa (job #3288985) | Cod sursa (job #397515)
Cod sursa(job #397515)
#include <stdio.h>
using namespace std;
#define maxn 200010
long n, m, x, i, j, p, k, tip, poz, v[maxn];
int main()
{
freopen("cautbin.in", "r", stdin);
freopen("cautbin.out", "w", stdout);
scanf("%d", &n);
for(i=1; i<=n; i++)
{
scanf("%d", &v[i]);
}
scanf("%d", &m);
for(i=1; i<=m; i++)
{
scanf("%d%d", &tip, &x);
if(tip==2)
x--;
for(p=1; p*2<=n; p*=2);
for(poz=0; p; p/=2)
{
if(poz+p<=n)
if(v[poz+p]<=x)
poz+=p;
}
if(tip==0)
{
if(v[poz]==x)
printf("%d\n", poz);
else
printf("-1\n");
}
if(tip==1)
printf("%d\n", poz);
if(tip==2)
printf("%d\n", poz+1);
}
return 0;
}