Cod sursa(job #2551289)

Utilizator Robys01Robert Sorete Robys01 Data 19 februarie 2020 18:38:38
Problema Cautare binara Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.87 kb
#include <bits/stdc++.h>

using namespace std;

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

int n, m, v[100001];


int cautbin(int val)
{
    int poz = 0;
    for(int p = n/2; p; p/=2)
        while(p + poz <=n && v[poz+p]<=val)
            poz+=p;

    return poz;
}


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

    for(int x, y, j; m; m--){
        in>>y>>x;

        switch(y)
        {
        case 0:
            j = cautbin(x);
            if(v[j] == x)
                out<<j<<'\n';
            else
                out<<-1<<'\n';
            break;

        case 1:
            j = cautbin(x);
            out<<j<<'\n';
            break;

        case 2:
            j = cautbin(x - 1) + 1;
            out<<j<<'\n';
            break;
        }

    }


    return 0;
}