Cod sursa(job #1180939)

Utilizator ArchazeyBaltatu Andrei-Mircea Archazey Data 1 mai 2014 14:24:32
Problema Cautare binara Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.76 kb
#include<fstream>
using namespace std;

ifstream fin("cautbin.in");
ofstream fout("cautbin.out");

int n,a[100005],m;

int main()
{
    int i,j,x,y,step;
    fin>>n;
    for (i=1;i<=n;i++)
        fin>>a[i];

    for (step=1;step<=n;step<<=1);

    fin>>m;
    while (m--)
        {
         fin>>x>>y;
         if (x<2)
            {
                for (j=step,i=0;j;j>>=1)
                    if (i+j<=n && a[i+j]<=y)
                        i+=j;
                if (!x && a[i]!=y)
                 fout<<"-1\n";
                else fout<<i<<"\n";
                continue;
            }
         for (j=step,i=n;j;j>>=1)
            if (i-j>=1 && a[i-j]>=y)
                i-=j;
         fout<<i<<"\n";
        }
    return 0;
}