Cod sursa(job #273668)

Utilizator StigmaSimina Pitur Stigma Data 8 martie 2009 20:47:53
Problema Cautare binara Scor 20
Compilator cpp Status done
Runda Arhiva educationala Marime 0.61 kb
#include <fstream.h>
#define nmax 100005
ifstream fin("cautbin.in");
ofstream fout("cautbin.out");

long x,m,y,n,a[nmax];


int caut (int x)
{int i, step;

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

for (i=0;step;step>>=1)
  if (i+step<n && a[i+step]<=x)
   i+=step;

return i;
}


int main()
{int i,k;
fin>>n;
for (i=1;i<=n;i++) fin>>a[i];
fin>>m;
for (i=1;i<=m;i++)
{fin>>y>>x;
k=caut(x);
if (y==0)
  if (a[k]==x) fout<<k<<'\n';
   else
    fout<<-1<<'\n';
if (y==1)
 {for (;a[k]>x;k--);
  fout<<k<<'\n';
 }

if (y==2)
 {for (;a[k]<x;k++);
  fout<<k<<'\n';
 }
}

fout.close();
return 0;
}