Cod sursa(job #2077527)

Utilizator ilie0712Botosan Ilie ilie0712 Data 28 noiembrie 2017 10:41:23
Problema Cautare binara Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.91 kb
#include <iostream>

using namespace std;
ifstream in("cautbin.in");
ofstream out("cautbin.out");
const int L=16;
int n, v[100001];

int caut0( int v[], int n, int x)
{
   int pas=1<<L;
   int r=0;

   while(pas!=0)
   {
      if(r+pas<=n && v[r+pas]<=x)
      r+=pas;

   pas/=2;
   }
   if (v[r]!=x) r==-1;
   return r;

}

int caut1( int v[], int n, int x)
{
   int pas=1<<L;
   int r=0;
   while(pas!=0)
   {
     if(r+pas<=n && v[r+pas]<=x)
     r+=pas;

     pas/=2;
   }

   return r;
}


int caut2( int v[], int n, int x)
{
  int pas=1<<L;
  int r=0;
  while(pas!=0)
  {
    if(r+pas<=n && v[r+pas]<x)
    r+=pas;

    pas/=2;
  }
  return r+1;
}


int main()
{
int n,m,p,x;
in>>n;
for(int i=1; i<=n; ++i)
{
  in>>v[i];
}
in>>m;
    for(int i=1; i<=m; ++i)
    {
      in>>p>>x;
      if(p==0) out<<caut0(v,n,x)<<endl;
      if(p==1) out<<caut1(v,n,x)<<endl;
      if(p==2) out<<caut2(v,n,x)<<endl;
    }
    return 0;
}