Cod sursa(job #1342290)

Utilizator cristy801Cristi Chirtos cristy801 Data 13 februarie 2015 19:21:57
Problema Cautare binara Scor 10
Compilator cpp Status done
Runda Arhiva educationala Marime 1.17 kb
#include <fstream>

using namespace std;
int v[100000],n,i;
int caut(int x)
{
    int in,sf,mij,poz;
    in=1;sf=n;
    mij=(in+sf)/2;
    while(v[mij]!=x&&in!=sf)
    {
        if(v[mij]<x)
        {
            in=mij+1;
            mij=(in+sf)/2;
        }
        else
        {
            sf=mij-1;
            mij=(in+sf/2);
        }
    }
    for(i=mij+1;i<=n;++i)
    {
        if(v[i]==x)
            mij=i;}
    if(v[mij]==x)
        return mij;
    else
        return -1;
}
int main()
{
    ifstream f("cautbin.in");
    ofstream g("cautbin.out");
    int i,x,m,j,intr,mij;
    f>>n;
    for(i=1;i<=n;++i)
        f>>v[i];
    f>>m;
    for(j=1;j<=m;++j)
    {
        f>>intr>>x;
        if(intr==0)
            g<<caut(x)<<'\n';
        if(intr==1)
        {
            for(i=n;i>=0;--i)
            {
                if(v[i]<=x)
                    {g<<i<<'\n';break;}
            }
        }
        if(intr==2)
        {
            for(i=0;i<=n;++i)
            {
                if(v[i]>=x)
                {
                    g<<i<<'\n';break;
                }
            }
        }
    }
    return 0;
}