Cod sursa(job #1225151)

Utilizator george_stelianChichirim George george_stelian Data 1 septembrie 2014 01:50:19
Problema Cautare binara Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.21 kb
#include <cstdio>

using namespace std;

int v[100010],n,m,x,i,st,dr,mid;

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]);
    for(scanf("%d",&m);m;m--)
    {
        scanf("%d",&x);
        if(x==0)
        {
            scanf("%d",&x);
            st=1;dr=n;
            while(st<=dr)
            {
                mid=(st+dr)/2;
                if(x<v[mid]) dr=mid-1;
                else st=mid+2;
            }
            if(x==v[dr]) printf("%d\n",dr);
            else printf("-1\n");
        }
        else if(x==1)
        {
            scanf("%d",&x);
            st=1;dr=n;
            while(st<=dr)
            {
                mid=(st+dr)/2;
                if(x<v[mid]) dr=mid-1;
                else st=mid+2;
            }
            printf("%d\n",dr);
        }
        else
        {
            scanf("%d",&x);
            st=1;dr=n;
            while(st<=dr)
            {
                mid=(st+dr)/2;
                if(x<=v[mid]) dr=mid-1;
                else st=mid+1;
            }
            printf("%d\n",st);
        }
    }
    return 0;
}