Cod sursa(job #2190111)

Utilizator Vlad_ConstantinVlad Constantin Vlad_Constantin Data 29 martie 2018 20:02:57
Problema Cautare binara Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.83 kb
#include <iostream>
#include <cstdio>
using namespace std;
const int L=16;
int v[100001];
int x,n;
int cauta(int x,int cerinta)
{
    int r=0,pas=1<<L;
    while(pas!=0)
    {
        if(cerinta==0||cerinta==1)
        {
            if(r+pas<=n&&v[r+pas]<=x)
                r=r+pas;
        }
        if(cerinta==2)
        {
            if(r+pas<=n&&v[r+pas]<x)
                r=r+pas;
        }
        pas=pas/2;

    }
    if(cerinta==0)
    {
        if(v[r]<x)
            r=-1;
    }
    if(cerinta==2)
        r++;


    return r;
}
int main()
{
    freopen("cautbin.in","r",stdin);
    //freopen("cautbin.out","w",stdout);
    int n,m,i,cerinta;
    cin>>n;
    for(i=1; i<=n; i++)
        cin>>v[i];
    cin>>m;
    for(i=1; i<=m; i++)
    {
        cin>>cerinta>>x;
        cout<<cauta(x,cerinta);
        cout<<endl;
    }
    return 0;
}