Cod sursa(job #1321019)

Utilizator bajiBajan Vlad baji Data 18 ianuarie 2015 18:42:05
Problema Cautare binara Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.08 kb
#include <fstream>

using namespace std;
ifstream fin("cautbin.in");
ofstream fout("cautbin.out");
int v[100010],j=0,n,m,intr,x,i=0;
void caz0(int x)
{ int step,aux,d=0;
    for (step = 1; step < n; step <<= 1);
    for (i = 0; step; step >>= 1)
        if (i + step <= n && v[i + step] <=x )
           i += step;
 if(v[i]==x)
  fout<<i<<'\n';
  else
  fout<<-1<<'\n';
}
void caz1(int x)
{
   int i, step,aux,d=0;
    for (step = 1; step < n; step <<= 1);
    for (i = 0; step; step >>= 1)
        if (i + step <= n && v[i + step] <=x )
           i += step;

    fout<<i<<'\n';

}
void caz2(int x)

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

   fout<<i+1<<'\n';
}


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

   fin>>m;
   for(j=0;j<m;j++)
    {
     fin>>intr;
     fin>>x;
       if(intr==0)
        caz0(x);
       if(intr==1)
        caz1(x);
       if(intr==2)
        caz2(x);

    }
return 0;
}