Cod sursa(job #1325741)

Utilizator CostinMaraCostin Mara Luisa CostinMara Data 24 ianuarie 2015 12:18:27
Problema Cautare binara Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.81 kb
#include<fstream>
#include<iostream>
using namespace std;
 fstream fin ("cautbin.in",ios::in),
        fout("cautbin.out",ios::out);

int v[101000],n;
int cautare( int x, int st, int dr)
{ int m,i;
   m=((st+dr)/2);
   if (st>dr)
        return -1;
   if (v[m]==x)
        { i=1;
        while (x==v[m+i]) i++;   return m+i-1;}
        if (x==v[dr]) return dr;
        if (x==v[st]) return st;
    if(x>m)
    {
        st=m;  return cautare(x,st,dr);
    }
    else
     {
    dr=m;   return cautare(x,st,dr);
    }
}

int main ()
{
    int x,i,st,dr;
    fin>>n;
    for (i=1;i<=n;i++)
    fin>>v[i];
   st=v[1]; dr=v[n];
        fin>>x;
        fout<<cautare(x,st,dr)<<endl;
        fout<<cautare(x,st,dr)-1<<endl;
        fout<<cautare(x,st,dr)+1;
    fin.close();
    fout.close();
}