Cod sursa(job #1151969)

Utilizator andreismara97Smarandoiu Andrei andreismara97 Data 24 martie 2014 14:36:58
Problema Cautare binara Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1 kb
#include<fstream>
using namespace std;
ifstream in("cautbin.in");
ofstream out("cautbin.out");
int v[100005],n,q;

int cautbin1(int nr)
{
    int bin=1<<16,i=0;
    while(bin)
    {
        if(i+bin<=n && v[i+bin]<=nr)
            i+=bin;
        bin/=2;
    }
    if(v[i]==nr)
        return i;
    return -1;
}

int  cautbin2(int nr)
{
    int bin=1<<16,i=0;
    while(bin)
    {
        if(i+bin<=n && v[i+bin]<=nr)
            i+=bin;
        bin/=2;
    }
    return i;
}

int cautbin3(int nr)
{
    nr--;
    int bin=1<<16,i=0;
    while(bin)
    {
        if(i+bin<=n && v[i+bin]<=nr)
            i+=bin;
        bin/=2;
    }
    return i+1;
}


int main ()
{
    int i,p,nr;
    in>>n;
    for(i=1;i<=n;i++)
        in>>v[i];
    in>>q;
    for(i=1;i<=q;i++)
    {
        in>>p>>nr;
        if(p==0)
            out<<cautbin1(nr)<<'\n';
        if(p==1)
            out<<cautbin2(nr)<<'\n';
        if(p==2)
            out<<cautbin3(nr)<<'\n';
    }
}