Cod sursa(job #535711)

Utilizator AndrewTheGreatAndrei Alexandrescu AndrewTheGreat Data 17 februarie 2011 17:44:33
Problema Cautare binara Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.82 kb
//Cristi
#include <iostream>
#include<stdio.h>

using namespace std;

const int lg=100001;

int v[lg],n,m;

void read()
{
    int i;
    cin>>n;
    for(i=1;i<=n;i++)
    cin>>v[i];

    cin>>m;
}

int binar(int x)
{
    int i, j;
    for( i = 1; i <= n; i = i << 1);
    for( j = 0; i >= 0; i = i >> 1)
        if(i + j <= n && x >= v[j + i])
            j += i;
    return j;
}


void solve()
{
    int i,j,op,x,smile,oky;

    for(i=1;i<=m;i++)
    {
        cin>>op>>x;
        smile=binar(x);
        if(op==0)
        {
            if(v[smile] == x)
                printf("%d\n",smile);
            else printf("-1\n",smile);
        }

    }

}


int main()
{
    freopen("cautbin.in","r",stdin);
    freopen("cautbin.out","w",stdout);
    read();
    solve();
    return 0;
}