Cod sursa(job #1772733)

Utilizator RaduMirceaAndreiRadu Mircea Andrei RaduMirceaAndrei Data 6 octombrie 2016 23:05:42
Problema Cautare binara Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.01 kb
# include <fstream>
# define DIM 100010
using namespace std;
ifstream fin("cautbin.in");
ofstream fout("cautbin.out");
int v[DIM],n,m,i,j,x,val,step;
int main () {
    fin>>n;
    for(i=1;i<=n;i++)
        fin>>v[i];
    fin>>m;
    for(i=1;i<=m;i++){
        fin>>val>>x;
        if(val==0){
            for(step=1;step<=n;step<<=1);
            for(j=0;step;step>>=1)
                if(j+step<=n&&v[j+step]<=x)
                    j+=step;
            if(v[j]==x)
                fout<<j<<"\n";
            else
                fout<<-1<<"\n";
            continue;
        }
        if(val==1){
            for(step=1;step<=n;step<<=1);
            for(j=0;step;step>>=1)
                if(j+step<=n&&v[j+step]<=x)
                    j+=step;
            fout<<j<<"\n";
            continue;
        }
        for(step=1;step<=n;step<<=1);
        for(j=0;step;step>>=1)
            if(j+step<=n&&v[j+step]<x)
                j+=step;
            fout<<j+1<<"\n";
    }
    return 0;
}