Cod sursa(job #2075111)

Utilizator AntoniuFicAntoniu Ficard AntoniuFic Data 25 noiembrie 2017 11:25:51
Problema Cautare binara Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.19 kb
#include <stdio.h>

using namespace std;
int st, lg_pana_la_mij, n, m, intrebare, a[100000]={0}, x;

int main()
{
    freopen("cautbin.in", "r", stdin);
    freopen("cautbin.out", "w", stdout);
    scanf("%d \n", &n);
    for(int i=0; i<n; i++)
        scanf("%d, ", &a[i]);
    scanf("\n %d \n", &m);
    for(int i=0; i<m; i++)
    {
        scanf("%d %d \n", &intrebare, &x);
        lg_pana_la_mij=1, st=0;
        while(lg_pana_la_mij<=n)
            lg_pana_la_mij<<=1;
        if(intrebare<2)
        {
            while(lg_pana_la_mij)
            {
                if(st+lg_pana_la_mij<=n && a[st+lg_pana_la_mij-1]<=x)
                    st+=lg_pana_la_mij;
                lg_pana_la_mij>>=1;
            }
            if(intrebare==0&&a[st-1]!=x)
                printf("-1 \n");
            else
                printf("%d \n", st);
        }
        else
        {
            st=n;
            while(lg_pana_la_mij)
            {
                if(st-lg_pana_la_mij>0 && a[st-lg_pana_la_mij-1]>=x)
                    st-=lg_pana_la_mij;
                lg_pana_la_mij>>=1;
            }
            printf("%d \n", st);
        }
    }
    return 0;
}