Cod sursa(job #2288101)

Utilizator BlueCodeMihalache Catalin Alexandru BlueCode Data 22 noiembrie 2018 20:55:02
Problema Cautare binara Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.69 kb
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("cautbin.in");
ofstream g("cautbin.out");
#define NMax 100005

int n, m, v[NMax], step;
int main()
{   int tip, x, i, lg;

    f>>n;
    for(i=1;i<=n;++i)
        f>>v[i];
    for (step = 1; step <= n; step <<= 1);

    f>>m;
    for(int j=1;j<=m;++j)
    {
    f>>tip>>x;
    if(tip<2)
    {
    for (lg = step, i = 0; lg; lg >>= 1)
    if (i + lg <= n && v[i + lg] <= x)i += lg;

       if (!tip && v[i] != x)g<<-1<<'\n';
            else g<<i<<'\n';
     continue;
    }
    for (lg = step, i = n; lg; lg >>= 1)
      if (i - lg > 0 && v[i - lg] >= x)i -= lg;
        g<<i<<'\n';
    }
    return 0;
}