Cod sursa(job #2090861)

Utilizator Saara8899Ana Maria Saara8899 Data 18 decembrie 2017 19:57:00
Problema Cautare binara Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.96 kb

#include <fstream>
using namespace std;
ifstream in("cautbin.in");
ofstream out("cautbin.out");
const int t=16;
int n, v[100001];

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

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

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

}

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

     ok/=2;
   }

   return r;
}


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

    ok/=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)<<"\n";
      if(p==1) out<<caut1(v,n,x)<<"\n";
      if(p==2) out<<caut2(v,n,x)<<"\n";
    }
    return 0;
}