Cod sursa(job #1503059)

Utilizator OFY4Ahmed Hamza Aydin OFY4 Data 15 octombrie 2015 15:20:28
Problema Cautare binara Scor 60
Compilator cpp Status done
Runda Arhiva educationala Marime 0.91 kb
#include<cstdio>
using namespace std;
 #define nmax 100007

 int n,m,a,b,v[nmax];

 int cautbin(int val){

    int start =1,step= (1<<20);

    for(; step;step>>=1){

        int index=start+step;
        if(index>n)continue;
        if(v[index]<=val)
            start=index;
    }

    return start;
 }

 int main(){

    freopen("cautbin.in", "r", stdin);
    freopen("cautbin.out", "w", stdout);

    int px;

    scanf("%d", &n);

    for(int i=1;i<=n;++i)scanf("%d", &v[i]);

    scanf("%d", &m);

    for(; m; --m){

        scanf("%d %d", &a, &b);

        if(a==0){

            px=cautbin(b);

            if(v[px]==b)printf("%d \n", px);
            else printf("%d \n", -1);
        }
        else if(a==1){

            printf("%d \n", cautbin(b));
        }
        else if(a==2){

            printf("%d \n", cautbin(b-1)+1);
        }
    }

    return 0;
 }