Cod sursa(job #2075628)

Utilizator nicolaefilatNicolae Filat nicolaefilat Data 25 noiembrie 2017 16:10:21
Problema Cautare binara Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.08 kb
#include <iostream>
#include <fstream>
#define MAXN 100001

using namespace std;

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

int v[MAXN],pas,r,n;
const int l = 16;

void p1(int x){

    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;
}
void p2(int x){
    pas = 1<<l;
    r = 0;
    while(pas != 0){
        if(r + pas <= n && v[r+pas] <= x)
            r += pas;
        pas /= 2;
    }

}
void p3(int x){
    pas = 1<<l;
    r = 0;
    while(pas != 0){
        if(r + pas <= n && !(v[r + pas] >= x))
            r += pas;
        pas /= 2;
    }
    r++;
}


int main()
{
    in>>n;
    char ch;

    for(int i = 1; i <= n; i++)
        in>>v[i];
    int q,x;
    in>>q;
    for(int i = 0 ; i < q; i ++){
        in>>ch>>x;
        if(ch == '0')
            p1(x);
        else if(ch == '1')
            p2(x);
        else if(ch == '2')
            p3(x);
        out<<r<<"\n";
    }




    return 0;
}