Mai intai trebuie sa te autentifici.

Cod sursa(job #1837883)

Utilizator GeoeyMexicanuBadita George GeoeyMexicanu Data 30 decembrie 2016 15:50:36
Problema Cautare binara Scor 60
Compilator cpp Status done
Runda Arhiva educationala Marime 0.96 kb
#include <iostream>
#include <fstream>

using namespace std;

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

int i,j,n,m,k,t,p,r;
int* v;

int cauta(int s,int d,int caz,int val)
{
    int m;
    while(s<d)
    {
        m=(s+d)/2;
        if(v[m]>val)
            d=m;
        else
            s=m+1;
    }
    if(caz==0)
    {
        if(v[m]>val)
            m--;
        if(v[m]==val)
            return m;
    }
    else
        if(caz==1)
        {
            if(v[m]>val)
                m--;
            return m;
        }
        else
            if(caz==2)
            {
                while(v[m]>=val)
                {
                    m--;
                }
                return m+1;
            }
    return -1;
}
int main()
{
    f>>n;
    v=new int[n+4];
    for(i=1;i<=n;i++)
        f>>v[i];
    f>>p;
    while(p!=0)
    {
        f>>i>>j;
        g<<cauta(1,n,i,j)<<"\n";
        p--;
    }
}