Cod sursa(job #1161250)

Utilizator rockerboyHutter Vince rockerboy Data 31 martie 2014 09:32:33
Problema Cautare binara Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1 kb
#include <fstream>
#include <algorithm>

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

int n, i, j, x[100005], q, tipus, akt, poz;

int pos (int akt)
{
    int p = 1, i=0;
    while (p < n) p <<= 1;

    while (p)
    {
        p >>= 1;
        if (p+i <= n)
        {
            if (x[p+i] <= akt)
            {
                i += p;
            }
        }
    }
    return i;
}

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

    f >> q;
    for (i=1; i<=q; i++)
    {
        f >> tipus >> akt;
        if (!tipus)
        {
            poz = upper_bound (x+1, x+n+1, akt) - x-1;
            if (x[poz] != akt) g << -1 << "\n";
            else g << poz << "\n";
        }
        else if (tipus == 1)
        {
            g << upper_bound (x+1, x+n+1, akt) -x-1 << "\n";
        }
        else
        {
            poz = lower_bound (x+1, x+n+1, akt) - x;
            g << poz  << "\n";
        }
    }
}