Cod sursa(job #1700200)

Utilizator teodoramusatoiuTeodora Musatoiu teodoramusatoiu Data 9 mai 2016 19:56:33
Problema Cautare binara Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.4 kb
#include <iostream>
#include <fstream>

using namespace std;
ifstream in ("cautbin.in");
ofstream out ("cautbin.out");

const int N=100005;
const int M=100005;

int v[N],n,m,log;

int main()
{
    //citire
    in>>n;
    for(int i=1; i<=n; i++)
        in>>v[i];

    //cautare binara generala
    /* int rez=0;
     int pas<<log;
     while(pas!=0)
     {
         if(i+pas are proprietatea)
             i+=pas;
         pas/=2;
     }*/


    for(log=1; log<=n; log <<= 1);

    in>>m;
    int tip, elem;

    for(int i=1; i<=m; i++)
    {
        int rez=0;
        int pas=1<<log;
        in>>tip>>elem;

        if(tip==0)
        {
            while(pas!=0)
            {
                if(rez+pas<=n && v[rez+pas] == elem)
                    rez+=pas;
                pas/=2;
            }
            if(rez==0)
                out<<"-1"<<'\n';
            else
                out<<rez<<'\n';
        }

        if(tip==1)
        {
            while(pas!=0)
            {
                if(rez+pas<=n && v[rez+pas] <= elem)
                    rez+=pas;
                pas/=2;
            }
            out<<rez<<'\n';
        }

        if(tip==2)
        {
            while(pas!=0)
            {
                if(rez+pas<=n && v[rez+pas] < elem)
                {
                    rez+=pas;

                }
                pas/=2;
            }
            out<<rez+1<<'\n';
        }
    }
    return 0;
}