Cod sursa(job #2427814)

Utilizator stefan_cucosCucos Stefan stefan_cucos Data 2 iunie 2019 12:53:33
Problema Cautare binara Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.1 kb
#include <fstream>

using namespace std;

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

int n,m,i,p,x;
int v[1001];

int cb(int x,int st,int dr)
{
    int Sol = -1;
    while(st <= dr)
    {
        int Mij = (st+dr) / 2;
        if(v[Mij] == x)
        {
            if(v[Mij+1]==x)
                {
                    Mij++;
                    Sol=cb(x,Mij,n);
                }
            else
                Sol=Mij;
            break;
        }
        if(v[Mij] > x)
            dr = Mij - 1;
        if(v[Mij] < x)
            st = Mij + 1;
    }
    return Sol;
}

int main()
{
    in>>n;
    for(i=1; i<=n; i++)
        in>>v[i];
    in>>m;
    for(i=1; i<=m; i++)
    {
        in>>p>>x;
        if(p==0 || p==1)
        {
            out<<cb(x,1,n)<<endl;
        }
        if(p==2)
        {
           int y;
           y=cb(x,1,n);
           while(y)
           {
               if(v[y-1]<v[y])
                break;
               else
                y--;
           }
           out<<y<<endl;
        }

    }
    return 0;
}