Cod sursa(job #2077536)

Utilizator Mihnea_BranzeuMihnea Branzeu Mihnea_Branzeu Data 28 noiembrie 2017 10:50:00
Problema Cautare binara Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.02 kb
#include <fstream>

using namespace std;
ifstream fin ("cautbin.in");
ofstream fout("cautbin.out");
const int L=16;
int v[100001];

int caut0(int v[], int x,int n)
{
    int r,pas;
    pas=1<<L;
    r=0;
    while(pas!=0)
    {
        if(r+pas<=n && v[r+pas]<=x)
            r+=pas;
        pas/=2;
    }
    if(v[r]!=x) r=-1;
    return r;
}
int caut1(int v[], int x,int n)
{
    int r,pas;
    r=0;
    pas=1<<L;
    while(pas!=0)
    {
        if(r+pas<=n && v[r+pas]<=x)
            r+=pas;
        pas/=2;
    }
    return r;
}
int caut2(int v[],int x,int n)
{
    int r,pas;
    r=0;
    pas=1<<L;
    while(pas!=0)
    {
        if(r+pas<=n && v[r+pas]<x )
            r+=pas;
        pas/=2;
    }
    r++;
    return r;
}
int main()
{
    int i,t,m,x;
    int n;
    fin>>n;
    for(i=1; i<=n; i++)
        fin>>v[i];
    fin>>m;
    for(i=1; i<=m; i++)
    {
        fin>>t>>x;
        if(t==0) fout<<caut0(v,x,n)<<"\n";
        if(t==1) fout<<caut1(v,x,n)<<"\n";
        if(t==2) fout<<caut2(v,x,n)<<"\n";
    }
    return 0;
}