Cod sursa(job #1838043)

Utilizator GeoeyMexicanuBadita George GeoeyMexicanu Data 30 decembrie 2016 21:48:10
Problema Cautare binara Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.62 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 caut1(int s,int d,int val)
{
    int m;
    int poz=-1;
    while(s<=d)
    {
        m=(s+d)/2;
        if(v[m]==val)
        {
            poz=m;
            s=m+1;
        }
        else
            if(v[m]<val)
            {
                s=m+1;
            }
            else
                {
                    d=m-1;
                }
    }
    return poz;
}
int caut2(int s,int d,int val)
{
    int m;
    int poz=-1;
    while(s<=d)
    {
        m=(s+d)/2;
        if(v[m]<=val)
        {
            poz=m;
            s=m+1;
        }
        else
            if(v[m]>val)
            {
                d=m-1;
            }
    }
    return poz;
}
int caut3(int s,int d,int val)
{
    int m;
    int poz=-1;
    while(s<=d)
    {
        m=(s+d)/2;
        if(v[m]>=val)
        {
            poz=m;
            d=m-1;
        }
        else
            if(v[m]<val)
            {
                s=m+1;
            }
    }
    return poz;
}
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;
        if(i==0)
        {
            g<<caut1(1,n,j)<<"\n";
        }
        else
            if(i==1)
            {
                g<<caut2(1,n,j)<<"\n";
            }
            else
                if(i==2)
                {
                    g<<caut3(1,n,j)<<"\n";
                }
        p--;
    }
}