Cod sursa(job #945890)

Utilizator Darius15Darius Pop Darius15 Data 3 mai 2013 11:49:09
Problema Cautare binara Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.82 kb
#include <fstream>

using namespace std;
int step,n,i,m,val,u,a[100001],tip,x,j;
ifstream f("cautbin.in");
ofstream g("cautbin.out");
void citire( )
{
  f>>n;
  for (i=1;i<=n;i++)
  f>>a[i];
}
int main()
{
        citire();
        f>>m;
        for (step = 1; step <= n; step <<= 1);

    for (; m; --m)
    {
        f>>tip>>x;
        if (tip < 2)
        {
            for (u = step, i = 0; u; u >>= 1)
                if (i + u <= n && a[i + u] <= x)
                    i += u;

            if (!tip && a[i] != x)
                g<<"-1"<<'\n';
            else
                g<<i<<'\n';

        }
        else {
        for (u = step, i = n; u; u >>= 1)
            if (i - u > 0 && a[i - u] >= x)
                i -= u;
                 g<<i<<'\n';
    }
    }
        return 0;
}