Cod sursa(job #1533975)

Utilizator SirStevensIonut Morosan SirStevens Data 23 noiembrie 2015 09:49:54
Problema Cautare binara Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.21 kb
#include <bits/stdc++.h>

using namespace std;

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

int n,m,v[100000],maxx,k,x,ok;

void inline citire()
{
    for(int i=1 ; i<=n ;i++)
        in>>v[i];
}

int divide0(int li, int ls)
{

    int mij=(li+ls)/2;
    if(v[mij] == x && mij>maxx )
        maxx=mij,ok=1;
    divide0(li,mij-1);
    divide0(mij+1,ls);
    if(ok == 1)
        return maxx;
    return -1;


}
int divide1(int li, int ls)
{

    int mij=(li+ls)/2;
    if(v[mij] >= x && mij>maxx )
        maxx=mij,ok=1;
    divide1(li,mij-1);
    divide1(mij+1,ls);
    if(ok == 1)
        return maxx;
    return -1;


}
int divide2(int li, int ls)
{

    int mij=(li+ls)/2;
    if(v[mij] >= x && mij<maxx )
        maxx=mij,ok=1;
    divide2(li,mij-1);
    divide2(mij+1,ls);
    if(ok == 1)
        return maxx;
    return -1;


}


int main()
{
    in>>n;
    citire();
    while(m)
    {
    in>>k>>x;
    if(k==0)
    {maxx=1;
    out<<divide0(1,n);
    }
    out<<'\n';
    if(k==1)
    {
        maxx=1;
        out<<divide1(1,n);
    }
    out<<'\n';
    if(k==2)
    {
    maxx=n;
    out<<divide2(1,n)<<'\n';
    }}
    return 0;
}