Cod sursa(job #1579677)

Utilizator pibogaBogdan piboga Data 24 ianuarie 2016 22:44:15
Problema Cautare binara Scor 60
Compilator cpp Status done
Runda Arhiva educationala Marime 1.49 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 (w<v[mij])
                        d=mij-1;
                    else s=mij+1;
                }

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

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



            }
        }
        if (p)
            fout << p<<"\n";
        if (p==0 && q==0)
            fout << -1<<"\n";


    }
    return 0;
}