Cod sursa(job #2073070)

Utilizator CryshanaGanea Carina Cryshana Data 22 noiembrie 2017 18:04:20
Problema Cautare binara Scor 40
Compilator cpp Status done
Runda Arhiva educationala Marime 0.98 kb
#include <iostream>
#include <fstream>
using namespace std;
const int N=100001;
int  v[N],n;

int caut0 ( int x )
{
    long long pas=1<<16;
    int r=0;
    while(pas!=0)
    {
     if(r+pas<=n&&v[r+pas]<=x)
     {
       r+=pas;
     }
     pas/=2;
    }
    if(v[r]!=x) return -1;
    return r;
}

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

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

ifstream fin ("cautbin.in");
ofstream fout ("cautbin.out");

int main()
{
    int m, q, x;
    fin>>n;
    for( int i=1; i<=n; i++)
    fin>>v[i];
    fin>>m;
    while(m!=0)
    {
       fin>>q>>x;
       if(q==0) fout<<caut0(x);
       if(q==1) fout<<caut1(x);
       if(q==2) fout<<caut2(x);
       fout<<endl;
       m--;
    }
    return 0;
}