Cod sursa(job #1474228)

Utilizator Vlad_lsc2008Lungu Vlad Vlad_lsc2008 Data 21 august 2015 16:07:49
Problema Cautare binara Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.82 kb
#include <cstdio>
using namespace std;
int m,n,x[100010];

int main()
{
    freopen("cautbin.in","r",stdin);
    freopen("cautbin.out","w",stdout);
    scanf("%d",&n);
    int i,poz;
    for(i=1;i<=n;i++) scanf("%d",&x[i]);
    scanf("%d",&m);

    for(poz=1;poz<=n;poz<<=1);

    int tip,nr,lg;
    for(;m;--m)
    {
        scanf("%d%d",&tip,&nr);

        if(tip<2)
        {
            for(i=0,lg=poz;lg;lg>>=1)
                if(i+lg<=n && x[i+lg]<=nr)
                    i+=lg;

            if(tip==0 && x[i]!=nr) printf("-1\n");
            else printf("%d\n",i);
        }
        else
        {
            for(i=n,lg=poz;lg;lg>>=1)
                if(i-lg>0 && x[i-lg]>=nr) i-=lg;
            printf("%d\n",i);
        }

    }
    fclose(stdin);
    fclose(stdout);
    return 0;
}