Cod sursa(job #1806180)

Utilizator catalin1200Coman Catalin catalin1200 Data 14 noiembrie 2016 21:54:28
Problema Cautare binara Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.65 kb
#include <fstream>
using namespace std;
ifstream f("cautbin.in");
ofstream g("cautbin.out");
int v[100005],n,mij,st,dr,i,j,k,ok,x,c;
int main()

{

    f>>n;
    for(i=1;i<=n;i++)
        f>>v[i];
    f>>k;
    for(i=1;i<=k;i++)
    {
        f>>c>>x;
        st=1;
        dr=n;
        ok=0;
        while(st<=dr&&!ok)
        {
            mij=st+(dr-st)/2;
            if(mij==x)
                ok=1;
            else
                if(x<mij)
                    dr=mij-1;
                else
                    st=mij+1;

        }
        if(c==0)
        {
            ok=-1;
            for(j=mij;j<=n;j++)
                if(v[j]!=x)
               {
                   ok=j-1;
                break;
               }
               g<<ok<<'\n';
        }
        else
            if(c==1)
            {
                if(ok==1)
                    {
                        for(j=mij;j<=n;j++)
                        if(v[j]!=x)
                       {
                           ok=j-1;
                        break;
                       }
                            g<<ok<<'\n';
                    }
                else
                        g<<mij-1;

            }
            else
                if(ok==1)
                    {
                        for(j=mij;j>=1;j--)
                        if(v[j]!=x)
                       {
                           ok=j+1;
                            break;
                       }
                            g<<ok<<'\n';
                    }
                else
                        g<<mij<<'\n';



    }




    return 0;

}