Cod sursa(job #1424814)

Utilizator AndreiFlorescuAndrei Florescu AndreiFlorescu Data 25 aprilie 2015 15:41:25
Problema Cautare binara Scor 50
Compilator cpp Status done
Runda Arhiva educationala Marime 0.97 kb
#include <fstream>

using namespace std;

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

int main()
{
    int n, i = 0, m, tip, pas, sir[100001], x;
    file_in >> n;
    for(int j = 0; j < n; j++)
    {
        file_in >> sir[j];
    }
    file_in >> m;
    for(int j = 0; j < m; j++)
    {
        file_in >> tip >> x;
        pas = 1 << 16;
        if(tip == 0 || tip == 1)
        {
            i = 0;
            while(pas != 0)
            {
                if((i + pas) < n && sir[i+pas-1] <= x)
                    i+=pas;
                pas/=2;
            }
            if(tip == 0 && sir[i-1]!=x)
                file_out << -1 << "\n";
            else
                file_out << i << "\n";
        }
        else
        {
            i=0;
            while(pas!=0)
            {
                if((i+pas)<=n && sir[i+pas-1]<x)
                    i+=pas;
                pas/=2;
            }
            file_out << i+1 <<"\n";
        }
    }
    return 0;
}