Cod sursa(job #1210821)

Utilizator PlatenitesVoicu Cristian Platenites Data 21 iulie 2014 12:10:09
Problema Cautare binara Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.33 kb
#include <fstream>

using namespace std;

ifstream f("cautbin.in");
ofstream g("cautbin.out");
int v[100001],c,x,p,n,ok,st,dr,m,posib;
int main()
{
    f>>n;
    for(int i=1;i<=n;i++)
        f>>v[i];
    f>>posib;
    for(int i=1;i<=posib;i++)
    {
        f>>c>>x;
        st=1;dr=n;
        if(c==2)
            while(st<=dr)
            {
                m=(st+dr)/2;
                if(x==v[m] || v[m]>=x)
                {
                    ok=1;
                    p=m;
                    dr--;
                    // break;
                }
                else
                {
                    if(x<v[m])
                    dr=m-1;
                    else
                        st=m+1;
                }
            }
        else
            while(st<=dr)
            {
                m=(st+dr)/2;
                if(x==v[m] || v[m]<=x)
                {
                    ok=1;
                    p=m;
                    st++;
                    // break;
                }
                else
                {
                    if(x<v[m])
                    dr=m-1;
                    else
                        st=m+1;
                }
            }
        if(ok==0)
            g<<-1<<'\n';
        else
            g<<p<<'\n';
    }
    return 0;
}