Cod sursa(job #1126265)

Utilizator 96andreiFMI Andrei Barbu 96andrei Data 26 februarie 2014 22:17:44
Problema Cautare binara Scor 10
Compilator cpp Status done
Runda Arhiva educationala Marime 1.04 kb
#include <fstream>

using namespace std;

int N, a[100];

int bin(int val)
{
    int i, step;
    for (step = 1; step < N; step <<= 1);
    for (i = 0; step; step >>= 1)
        if (i + step < N && a[i + step] <= val)
            i += step;
    return i;
}

int bin1(int val)
{
    int i, step;
    for (step = 1; step < N; step <<= 1);
    for (i = 0; step; step >>= 1)
        if (i + step < N && a[i + step] < val)
            i += step;
    return i+1;
}

int main()
{
    ifstream fin("cautbin.in");
    ofstream fout("cautbin.out");
    fin>>N;
    int n;
    for(int i=1; i<=N; i++)
        fin>>a[i];
    fin>>n;
    for(int i=1; i<=n; i++)
    {
        int x,y,z;
        fin>>x>>y;
        if(x<2){
            z=bin(y);
            if(!x)
                if(a[z]!=y)
                    fout<<-1<<"\n";
                else fout<<z<<"\n";
            else
                fout<<z<<"\n";
        }
        else
            fout<<bin1(y)<<"\n";

    }
    fin.close();
    fout.close();
    return 0;
}