Cod sursa(job #455930)

Utilizator eudanipEugenie Daniel Posdarascu eudanip Data 14 mai 2010 16:18:55
Problema Cautare binara Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.53 kb
#include<stdio.h>

int sol,n,m,v[100005];

int main ()
{
    int i,st,dr,tip,val,mij;
    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,&val);
        if(!tip)
        {
            sol=-1;
            st=1;dr=n;
            while(st<=dr)
            {
                mij=(st+dr)/2;
                if(v[mij]<val)
                    st=mij+1;
                else
                    if(v[mij]>val)
                        dr=mij-1;
                    else
                    {
                        sol=mij;
                        st=mij+1;
                    }
            }
            printf("%d\n",sol);
            continue;
        }
        if(tip==1)
        {
            st=1;dr=n;
            while(st<=dr)
            {
                mij=(st+dr)/2;
                if(v[mij]<=val)
                {
                    sol=mij;
                    st=mij+1;
                }
                else
                    dr=mij-1;
            }
            printf("%d\n",sol);
            continue;
        }
        st=1;dr=n;
        while(st<=dr)
        {
            mij=(st+dr)/2;
            if(v[mij]<val)
                st=mij+1;
            else
            {
                sol=mij;
                dr=mij-1;
            }
        }
        printf("%d\n",sol);
    }
    return 0;
}