Cod sursa(job #1372824)

Utilizator TPotecTiberiu Potec TPotec Data 4 martie 2015 15:29:42
Problema Cautare binara Scor 60
Compilator cpp Status done
Runda Arhiva educationala Marime 1.12 kb
#include <iostream>
#include <fstream>
using namespace std;

ifstream in ("cautbin.in");
ofstream out ("cautbin.out");

int v[100010];

int main()
{
    int n,m,tip,i,x,pas;
    in>>n;
    for(i=1;i<=n;i++){
            in>>v[i];
    }
    in>>m;
    while(m--){
        in>>tip;
        in>>x;
        if(tip==0)
        {
            i=0;
            pas=1<<15;
            while(pas!=0){
            if(i+pas<=n && v[i+pas]<=x)
                i+=pas;
                pas/=2;
            }
            if(v[i]==x)
                out<<i<<'\n';
            else
                out<<-1<<'\n';
        }
        if(tip==1)
        {
            i=0;
            pas=1<<15;
            while(pas!=0){
            if(i+pas<=n && v[i+pas]<=x)
                i+=pas;
                pas/=2;
            }
            out<<i<<'\n';
        }
        if(tip==2)
        {
            i=0;
            pas=1<<15;
            while(pas!=0){
            if(i+pas<=n && v[i+pas]<x)
                i+=pas;
            pas/=2;
            }
            out<<i+1<<'\n';
        }
    }
    return 0;
}