Cod sursa(job #1991034)

Utilizator humastefan19Huma Stefan humastefan19 Data 14 iunie 2017 18:39:01
Problema Cautare binara Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.08 kb
#include <iostream>

#include<fstream>

using namespace std;

int a[100001], n, m,x,y;

int caut0(int x)
{
    int r=0, pas=1<<16;
    while(pas!=0)
    {
        if(r+pas<=n && a[r+pas]<=x)
        {
            r+=pas;
        }
        pas/=2;
    }
    if(a[r]!=x)
    {
        return -1;
    }
    else return r;
}
int caut1(int x)
{
    int r=0, pas=1<<16;
    while(pas!=0)
    {
        if(r+pas<=n && a[r+pas]<=x)
        {
            r+=pas;
        }
        pas/=2;
    }
    return r;
}
int caut2(int x)
{
    int r=0, pas=1<<16;
    while(pas!=0)
    {
        if(r+pas<=n && a[r+pas]<x)
        {
            r+=pas;
        }
        pas/=2;
    }

    return r+1;
}

int main()
{
    ifstream cin ("cautbin.in");
    ofstream cout ("cautbin.out");
    cin>>n;
    for(int i=1; i<=n; i++)
    {
        cin>>a[i];
    }
    cin>>m;
    for(int i=1; i<=m; i++)
    {
        cin>>x>>y;
        if(x==0)
        {
            cout<<caut0(y)<<"\n";
        }
        else if(x==1)
        {
            cout<<caut1(y)<<"\n";
        }
        else cout<<caut2(y)<<"\n";
    }
    return 0;
}