Cod sursa(job #655219)

Utilizator Laura_MMiclescu Laura Laura_M Data 1 ianuarie 2012 20:24:19
Problema Cautare binara Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.27 kb
#include <iostream>
#include <fstream>

using namespace std;

int v[100001], N, mij, x;

int cautare0(int x, int inf, int sup)
{
     if (inf<=sup)
        {mij=(sup+inf)/2;
         if (v[mij]==x) return mij;
            else
              if (v[mij]<x) cautare0(x,mij+1,sup);
                  else
                     cautare0(x,inf,mij-1);}
     else return -1;
}

int cautare1 (int x, int inf, int sup)
{
    if (inf<sup)
       {mij=(sup+inf)/2;
        if ((v[mij]<=x)&&(v[mij]<=v[mij+1]))
                  cautare1(x,mij+1,sup);
            else
              if (v[mij]<=x) return mij;
                  else cautare1(x,inf,mij-1);}
     else return 0;
}

int cautare2 (int x, int inf, int sup)
{
    if (inf<sup)
       {mij=(sup+inf)/2;
        if ((v[mij]>=x)&& (v[mij-1]>=v[mij]))
            cautare2(x,inf,mij-1);
            else
              if (v[mij]>=x) return mij;                  
                  else cautare2(x,mij+1,sup);}
     else return 0;
}   

int main()
{
    ifstream f("cautbin.in");
    ofstream g("cautbin.out");
    f>>N;
    for (int i=1; i<=N; i++)
         f>>v[i];    
    g<<cautare0(x,1,N)<<endl;
    g<<cautare1(x,1,N)<<endl;
    g<<cautare2(x,1,N)<<endl;
}