Cod sursa(job #1157095)

Utilizator roparexRoparex roparex Data 28 martie 2014 11:28:10
Problema Cautare binara Scor 40
Compilator cpp Status done
Runda Arhiva educationala Marime 1.3 kb
#include<cstdio>
int mij,st,dr,m,v[1001],p,nr,n,i,ok;
int main()
{
    freopen("cautbin.in","rt",stdin);
    freopen("cautbin.out","wt",stdout);
    scanf("%ld",&n);
    for(i=1; i<=n; i++)
    {
        scanf("%ld",&v[i]);
    }
    scanf("%ld",&m);
    for(i=1; i<=m; i++)
    {
        scanf("%ld%ld",&p,&nr);
        ok=0;
        st=1;
        dr=n;
        if(p==0||p==1)
        {
            while(st<=dr)
            {
                mij=(st+dr)/2;
                if(v[mij]>nr)
                {
                    dr=mij-1;
                    continue;
                }
                if(v[mij]<=nr)
                {
                    ok=mij;
                    st=mij+1;
                    continue;
                }
            }
        }
        if(p==2)
        {
            while(st<=dr)
            {
                mij=(st+dr)/2;
                if(v[mij]>=nr)
                {
                    dr=mij-1;
                    ok=mij;
                    continue;
                }
                if(v[mij]<nr)
                {
                    st=mij+1;
                    continue;
                }
            }
        }
        if(p==0&&v[ok]!=nr)
        printf("-1\n");
        else
        printf("%ld\n",ok);
    }
}