Cod sursa(job #2235951)

Utilizator sidorencuoanaSidorencu Oana Alexandra sidorencuoana Data 27 august 2018 13:51:45
Problema Cautare binara Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.24 kb
#include <iostream>
#include <fstream>
#define MAX 100000

using namespace std;

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

int v[MAX];

int Caut1(int st, int dr,int v[MAX], int n)
{
    if(st==dr)
      if(v[st]==n)
      return st;
      else
      return --st;
    else
    {
        int m=(st+dr)/2;
        if(v[m]<=n)
          return Caut1(m+1,dr,v,n);
          else
          return Caut1(st,m-1,v,n);
    }
}

int Caut0 (int st,int dr, int v[MAX],int n)
{
    if(st==dr)
      if(v[--st]==n)
      return st;
      else
      return -1;
    else
    {
        int m=(st+dr)/2;
        if(v[m]<=n)
          return Caut0(m+1,dr,v,n);
          else
          return Caut0(st,m-1,v,n);
    }
}

int Caut2 (int st, int dr,int v[MAX], int n)
{
    if(st==dr)
      return st;

    else
    {
        int m=(st+dr)/2;
        if(v[m]<n)
          return Caut2(m+1,dr,v,n);
          else
          return Caut2(st,m,v,n);
    }
}

int main()
{int N,M,i,y,x;
f>>N;
for(i=1;i<=N;i++)
f>>v[i];
f>>M;
while(M!=0)
{M--;
    f>>y>>x;
    if(y==0)
    g<<Caut0(1,N,v,x)<<endl;
    if(y==1)
    g<<Caut1(1,N,v,x)<<endl;
    if(y==2)
    g<<Caut2(1,N,v,x)<<endl;
}

    return 0;
}