Cod sursa(job #2186796)

Utilizator Narvik13Razvan Roatis Narvik13 Data 25 martie 2018 22:48:25
Problema Cautare binara Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.96 kb
#include <fstream>
#define MMAX 100002

using namespace std;

int n,v[MMAX];

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

int cautbin(int val)
{
    int step,i;
    for(step = 1; step < n; step <<= 1);
    for(i = 0; step; step >>=1)
        if(i+step <= n && v[i+step] <= val)
            i += step;

    return i;
}

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

    int m;
    f >> m;
    for(int i = 1; i <= m; ++i)
    {
        int c, x;
        f >> c >> x;
        int p;

        if(c == 0)
        {
            p = cautbin(x);
            if(v[p] == x)
                o << p << '\n';
            else
                o << "-1\n";
        }
        else if(c == 1)
        {
            p = cautbin(x);
            o << p << '\n';
        }
        else
        {
            p = cautbin(x-1);
            ++p;
            o << p << '\n';
        }
    }

    return 0;
}