Cod sursa(job #1395730)

Utilizator radunicolae99Radu Nicolae radunicolae99 Data 21 martie 2015 13:18:00
Problema Cautare binara Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.21 kb
#include <iostream>
#include <fstream>

using namespace std;

int v[100001];

int main()
{
    int N,M,i,j,tip,x,pas,n;

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

    in>>n;
    for(i=1;i<=n;i++)
        in>>v[i];
    in>>M;
    for(j=1;j<=M;j++)
    {
        in>>tip>>x;
        if(tip==0)
        {
            i=0;
            pas=1<<16;
            while(pas)
            {
                if(i+pas <= n && v[i + pas] <= x)
                    i=i+pas;
                pas=pas/2;
            }
            if (v[i] != x)
                out << "-1\n";
            else
                out << i << "\n";
        }
        if (tip == 1)
        {
            i=0;
            pas=1<<16;
            while(pas)
            {
                if(i+pas<=n && v[i+pas]<=x)
                    i+=pas;
                pas/=2;
            }
            out<<i<<"\n";
        }
        if(tip==2)
        {
                i=0;
                pas=1<<16;
                while(pas)
                {
                        if(i+pas<=n && v[i+pas]<x)
                            i+=pas;
                        pas/=2;
                }
                i++;
                out<<i<<"\n";
        }
    }

    return 0;
}