Cod sursa(job #1321031)

Utilizator Alexe19Hegyi Ervin Alex Alexe19 Data 18 ianuarie 2015 18:50:57
Problema Cautare binara Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.43 kb
#include <fstream>
using namespace std;

int N, A[15], j, M, Q, y, Nr,k ,ok;

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

int bsu(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 bsl(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()
{
    f>>N;
    for(j=1 ; j<=N ; j++)
        f>>A[j];
    f>>M;
    for(j=0 ; j<M ; j++)
    {
        f>>Q;
        f>>Nr;
        if(Q==0)
        {
            y=bsu(Nr);
            if(A[y]==Nr)
                g<<y<<'\n';
            else
                g<<-1<<'\n';
        }
        if(Q==1)
        {
            for(k=Nr ; k>0 && ok==0 ; k--)
            {
                y=bsu(k);
                if(A[y]==k)
                {
                    g<<y<<'\n';
                    ok=1;
                }
            }
        }
        ok=0;
        if(Q==2)
        {
            for(k=Nr ; k>0 && ok==0 ; k--)
            {
                y=bsl(k);
                if(A[y]==k)
                {
                    g<<y<<'\n';
                    ok=1;
                }
            }
        }

    }
return 0;
}