Cod sursa(job #1321060)

Utilizator Alexe19Hegyi Ervin Alex Alexe19 Data 18 ianuarie 2015 19:10:06
Problema Cautare binara Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.06 kb
#include <fstream>
using namespace std;

int N, A[100010], 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)
        {
            g<<bsl(Nr+1)-1<<'\n';
        }
        ok=0;
        if(Q==2)
        {
            g<<bsu(Nr-1)+1<<'\n';
        }

    }
return 0;
}