Cod sursa(job #829652)

Utilizator geniuanduOncescu Andreea geniuandu Data 5 decembrie 2012 18:16:36
Problema Cautare binara Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.4 kb
#include<cstdio>
using namespace std;
int m,ls,ld,i,n,intr,x,mij,cp,v[100001];
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",&intr,&x);
        if(intr==0)
        {
            ls=1;
            ld=n;
            while(ls<=ld)
            {
                mij=(ls+ld)/2;
                if(v[mij]<=x)
                {
                    ls=mij+1;
                    cp=mij;
                }
                else
                    ld=mij-1;
            }
            if(v[cp]==x)
                printf("%d\n",cp);
            else
                if(v[cp]!=x)
                    printf("-1\n");
        }
        else
            if(intr==1)
                printf("%d\n",ld);
            else
            {
                ls=1;
                ld=n;
                while(ls<=ld)
                {
                    mij=(ls+ld)/2;
                    if(v[mij]>=x)
                    {
                        ld=mij-1;
                        cp=mij;
                    }
                    else{
                        ls=mij+1;
                        //cp=mij;
                    }
                }
                printf("%d\n",cp);
            }
    }
    return 0;
}