Cod sursa(job #2138205)

Utilizator radurotaruRotaru Radu Stefan radurotaru Data 21 februarie 2018 14:14:30
Problema Cautare binara Scor 40
Compilator cpp Status done
Runda Arhiva educationala Marime 1.22 kb
#include <fstream>

using namespace std;
ifstream f("cautbin.in");
ofstream g("cautbin.out");
int n,r,v[100001],x,y,t;
int binarysearh0(int q,int w,int k)
{
    int m;
    while(q<=w)
    {
        m=(q+w)/2;
        if(v[m]<=k)
            q=m+1;
        else
            w=m-1;
    }
    m=(q+w)/2;
    if(v[m]>k)
        m--;
    if(v[m]==k)
        return m;
    return -1;
}
int binarysearch1(int q,int w,int k)
{
    int m;
    while(q<w)
    {
        m=(q+w)/2;
        if(v[m]<=k)
            q=m+1;
        else
            w=m;
    }
    m=(q+w)/2;
    if(v[m]>k)
        m--;
    return m;
}
int binarysearch2(int q,int w,int k)
{
    int m;
    while(q<w)
    {
        m=(q+w)/2;
        if(v[m]<k)
            q=m+1;
        else
            w=m;
    }
    m=(q+w)/2;
    if(v[m]<k)
        m++;
    return m;
}

int main()
{
    f>>n;
    for(int i=1; i<=n; i++)
        f>>v[i];
    f>>r;
    for(int i=1; i<=r; i++)
    {
        f>>x>>y;
        t=n;
        if(x==0)
            g<<binarysearh0(1,t,y)<<endl;
        if(x==1)
            g<<binarysearch1(1,t,y)<<endl;
        if(x==2)
            g<<binarysearch2(1,t,y)<<endl;
    }
    return 0;
}