Cod sursa(job #912107)

Utilizator pauldinudinu paul pauldinu Data 12 martie 2013 08:16:36
Problema Cautare binara Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.92 kb
#include <fstream>
using namespace std;
ifstream f("cautbin.in");
ofstream g("cautbin.out");
int n,v[100000];
int caut0(int x)
{
    int i=0,pas=1<<16;
    while(pas!=0)
    {
        if(i+pas<=n&&v[i+pas]<=x)
            i+=pas;
        pas/=2;
    }
    if(v[i]==x)return i;
    else return -1;

}
int caut1(int x)
{
    int i=0,pas=1<<16;
    while(pas!=0)
    {
        if(i+pas<=n&&v[i+pas]<=x)
            i+=pas;
        pas/=2;
    }
    return i;
}
int caut2(int x)
{
    int i=0,pas=1<<16;
    while(pas!=0)
    {
        if(i+pas<=n&&v[i+pas]<x)
            i+=pas;
        pas/=2;
    }

    return i+1;
}
int main()
{
    int m,r,x,i,j;
    f>>n;
    for(i=1;i<=n;i++)
    f>>v[i];
    f>>m;
    for(j=1;j<=m;j++)
    {
        f>>r>>x;
        if(r==0) g<<caut0(x)<<"\n";
        if(r==1) g<<caut1(x)<<"\n";
        if(r==2) g<<caut2(x)<<"\n";
    }
    return 0;
}