Cod sursa(job #2334572)

Utilizator LuminitaNitescuLuminita Nitescu LuminitaNitescu Data 2 februarie 2019 18:26:25
Problema Cautare binara Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.82 kb
#include <iostream>
#include <fstream>


using namespace std;
ifstream in ("cautbin.in");
ofstream out ("cautbin.out");

int v[100001],n;
int cbin (int val) {
    int pos=0;

    for (int msk=1<<20; msk>0; msk/=2)
        if (pos+msk<=n&& v[pos+msk]<= val)
            pos+=msk;

    return pos;
}

int main() {
    int m, op, x, i, p;

    in>>n;
    for (i=1; i<=n; i++) {
        in>>v[i];
    }
    in>>m;

    for (i=1; i<=m; i++) {
        in>>op>>x;

        if (op==0) {
            p=cbin(x);
            if(v[p]==x)
                out<<p<<'\n';
            else
                out <<-1<<'\n';
        } else if (op==1) {
            p=cbin(x);

            out<<p<<'\n';
        } else if (op==2) {
            p=cbin(x-1);
            out<<p+1<<'\n';
        }
    }
    return 0;
}