Cod sursa(job #1812323)

Utilizator GeoeyMexicanuBadita George GeoeyMexicanu Data 21 noiembrie 2016 23:05:51
Problema Cautare binara Scor 40
Compilator cpp Status done
Runda Arhiva educationala Marime 1.05 kb
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("cautbin.in");
ofstream g("cautbin.out");
int i,j,n,m,k,v[100020],x,r;
void caut(int s,int d,int &p,int k,int x)
{
    if(s<=d)
    {
    int m;
    m=(s+d)/2;
    if(k==0)
    {
        if(v[m]==x && m>p)
            p=m;
            caut(s,m-1,p,k,x);
            caut(m+1,d,p,k,x);
    }
    else
        if(k==1)
        {
            if(v[m]<=x && m>p)
                p=m;
            caut(s,m-1,p,k,x);
            caut(m+1,d,p,k,x);
        }
        else
            if(k==2)
            {
                if(v[m]>=x && p==-1)
                    p=m;
                else
                    if(v[m]>=x && p>0 && m<p)
                    p=m;
                caut(s,m-1,p,k,x);
                caut(m+1,d,p,k,x);
            }
    }
}
int main()
{
    int p=-1;
    f>>n;
    for(i=1;i<=n;i++)
        f>>v[i];
    f>>r;
    while(r!=0)
    {
        p=-1;
        f>>k>>x;
        caut(1,n,p,k,x);
        g<<p<<endl;
        r--;
    }
}