Cod sursa(job #397514)

Utilizator andreea1coolBobu Andreea andreea1cool Data 17 februarie 2010 09:05:30
Problema Cautare binara Scor 40
Compilator cpp Status done
Runda Arhiva educationala Marime 0.82 kb
#include <stdio.h>

using namespace std;

#define maxn 10010

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;
}