Cod sursa(job #1247118)

Utilizator lauratalaatlaura talaat lauratalaat Data 22 octombrie 2014 09:27:53
Problema Cautare binara Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.02 kb
#include<stdio.h>
int v[100001],n;
int f0 ( int numar ){
    int i=0,pas=2<<17;
    while(pas!=0){
        if(i+pas<=n)
            if(v[i+pas]==numar)
                i+=pas;
        pas>>=1;
    }
    return i;
    }
int f1 ( int numar ){
    int i=0;
    int pas=2<<17;
    while(pas!=0){
        if(i+pas<=n)
            if(v[i+pas]<=numar)
                i+=pas;
        pas>>=1;
    }
    return i;
}
int f2 ( int numar ){
    int i=0,pas=2<<17;
    while(pas!=0){
        if(i+pas<=n)
            if(v[i+pas]<numar)
                i+=pas;
        pas>>=1;
    }
    return i+1;
    }
int main(){
    int i,m,tip,nr,x;
    freopen("cautbin.in","r",stdin);
    freopen("cautbin.out","w",stdout);
    scanf("%d",&n);
    for(i=1;i<=n;i++)
        scanf("%d",&v[i]);
    scanf("%d",&m);
    for(i=1;i<=m;i++){
        scanf("%d%d",&tip,&nr);
        if(tip==0)
            x=f0(nr);
        else
            if(tip==1)
                x=f1(nr);
            else
                x=f2(nr);
        printf("%d\n",x);
    }
    return 0;
    }