Cod sursa(job #1247125)

Utilizator lauratalaatlaura talaat lauratalaat Data 22 octombrie 2014 09:46:01
Problema Cautare binara Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.11 kb
#include<stdio.h>
int v[100001],n;
int f0 ( int numar ){
    int i=0,pas=1<<17,ver=1;
    while(pas!=0){
        if(i+pas<=n)
            if(v[i+pas]<=numar){
                i+=pas;
                ver=0;
            }
        pas>>=1;
    }
    if(v[i]==numar)
        return i;
    else
        return -1;
}
int f1 ( int numar ){
    int i=0;
    int pas=1<<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=1<<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;
    }