Cod sursa(job #1182274)

Utilizator cristian.caldareaCaldarea Cristian Daniel cristian.caldarea Data 5 mai 2014 18:58:55
Problema Cautare binara Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.09 kb
#include<fstream>
using namespace std;

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

int n,a[100005],m;

int main()
{
    int x, y, i, k;
    f >> n;
    for (  i = 1; i <= n; i++ )
        f >> a[i];
    f >> m;
    for ( int j = 1; j <= m; j++)
        {
         f >> x >> y;
         if ( x == 0 )
            {
                for (  k = 1;k <= n; k <<=1 );
                for (  i = 0; k ; k >>=1)
                    if (i+k<=n && a[i+k]<=y)
                        i+=k;
                if (a[i]==y)
                 g<<i<<"\n";
                else g<<"-1\n";
            }
         if (x==1)
            {
               for (  k=1;k<=n;k<<=1);
                for (  i=0;k;k>>=1)
                    if (i+k<=n && a[i+k]<=y)
                        i+=k;
                g<<i<<"\n";
            }
         if (x==2)
            {
                for (  k=1;k<=n;k<<=1);
                for (  i=n;k;k>>=1)
                    if (i-k>=1 && a[i-k]>=y)
                        i-=k;
                g<<i<<"\n";
            }
        }
    return 0;
}