Cod sursa(job #2574262)

Utilizator victorzarzuZarzu Victor victorzarzu Data 5 martie 2020 21:10:49
Problema Cautare binara Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.94 kb
#include <bits/stdc++.h>

using namespace std;
ifstream f("cautbin.in");
ofstream g("cautbin.out");
int n, m;
int v[100001];
int tip, x;
int rep, rep1;

void Read()
{
    f>>n;
    for(int i = 1;i <= n;++i)
        f>>v[i];
    f>>m;
}

void Solve()
{
    for(rep = 1;rep <= n; rep <<= 1);

    for(int j = 1;j <= m;++j)
    {
        f>>tip>>x;
        int i = 0;

        if(tip < 2)
        {
            for(rep1 = rep,i = 0;rep1; rep1 >>= 1)
                if(i + rep1 <= n && v[i + rep1] <= x)
                    i += rep1;

            if(tip == 0 && v[i] != x)
                g<<-1<<'\n';
            else
                g<<i<<'\n';
        }
        else
        {
            for(rep1 = rep,i = n;rep1;rep1 >>= 1)
                if(i - rep1 > 0 && v[i - rep1] >= x)
                    i -= rep1;
            g<<i<<'\n';
        }
    }
}

int main()
{
    Read();
    Solve();
    return 0;
}