Cod sursa(job #1257433)

Utilizator Andrei66Andrei Rusu Andrei66 Data 7 noiembrie 2014 19:14:38
Problema Cautare binara Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.21 kb
#include <iostream>
#include <fstream>

using namespace std;

int x[100001];

int cautbin0(int st,int dr,int nr)
{
  int mij;

  while (st<=dr) {
        mij=(st + dr)/2;
        if (x[mij]<=nr)
            st=mij+1;
        else
            dr=mij-1;
    }
    mij=(st+dr)/2;
    if (x[mij]>nr) --mij;
    if (x[mij]==nr)
        return mij;
    return -1;

}

int cautbin1(int st,int dr,int nr)
{
  int mij;

  while (st<dr)
  {
    mij=(st+dr)/2;
    if (x[mij]<=nr)
      st=mij+1;
    else dr=mij;
  }
  mij=(st+dr)/2;
  if (x[mij]>nr)
    --mij;
  return mij;
}

int cautbin2(int st,int dr,int nr)
{
  int mij;

   while (st<dr) {
        mij=(st+dr)/2;
        if (x[mij]<nr)
            st=mij+1;
        else
            dr=mij;
    }

    mij=(st+dr)/2;
    if (x[mij]<nr)
       ++mij;
    return mij;

}

int main()
{
  int n,i,nr,a,b;

  ifstream f("cautbin.in");
  ofstream g("cautbin.out");

  f>>n;

  for (i=1;i<=n;++i)
    f>>x[i];

  f>>nr;

  for(i=1;i<=nr;++i){
    f>>a>>b;
    if (a==0)
      g<<cautbin0(1,n,b)<<" ";
    if (a==1)
      g<<cautbin1(1,n,b)<<" ";
    if (a==2)
      g<<cautbin2(1,n,b)<<" ";
  }

    return 0;
}