Cod sursa(job #1579649)

Utilizator pibogaBogdan piboga Data 24 ianuarie 2016 22:10:23
Problema Cautare binara Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.76 kb
#include <fstream>

using namespace std;
int n,m,i,j,mij,q,w,s,d,p;
long long v[100010];
ifstream fin ("cautbin.in");
ofstream fout ("cautbin.out");
int main()
{
    fin >> n;
    for (i=1;i<=n;i++)
        fin >> v[i];
    fin >>m;
    for (i=1;i<=m;i++)
    {
        q=0;
        w=0;
        fin >> q >> w;

        //for (j=1;j<=n;j++)
        {
            p=0;
            s=1;
            d=n;
            while (s<=d)
            {
                mij=(d-s)/2+s;
                if (q==0)
                {
                    if (v[mij]==w)
                    {
                        p=mij;
                        s=mij+1;
                    }
                }

                if (q==1)
                {
                    if (v[mij]<=w)
                    {
                        p=mij;
                        s=mij+1;
                    }
                }

                if (q==2)
                {
                    if (v[mij]==w)
                    {
                        p=mij;
                        d=mij-1;
                    }
                }

                    if (v[mij]<w)
                        {
                            if (q!=2)
                            {
                                d=mij-1;
                            }
                            else
                                s=mij+1;
                        }

                    if (v[mij]>w)
                    {
                        //if (q!=2)
                        s=mij+1;
                       // else d=mij-1;

                    }

            }
        }
        if (p)
            fout << p<< endl;
        if (p==0 && q==0)
            fout << -1;


    }
    return 0;
}