Cod sursa(job #1999055)

Utilizator ElektrykT E S L A P E F E L I E Elektryk Data 10 iulie 2017 08:42:55
Problema Cautare binara Scor 20
Compilator cpp Status done
Runda Arhiva educationala Marime 1.69 kb
#include <fstream>
using namespace std;
ifstream in("cautbin.in");
ofstream out("cautbin.out");
int v[100001];
int main()
{
    int n,gg,i,poz=0,j,a,b,k,u,p,m;
    in>>n;
    for(i=1; i<=n; i++)
        in>>v[i];
    in>>gg;
    for(j=1; j<=gg; j++)
    {
        in>>a>>b;
        if(a==0)
        {
            p=1;
            u=n;
            k=-1;
            while(p<=u)
            {
                m=(p+u)/2;
                if(v[m]==b && v[m+1]>b)
                    {
                        k=m;
                        break;
                    }
                else if(v[m]>b)
                    u=m-1;
                else
                    p=m+1;
            }
                out<<k<<'\n';
        }
        else if(a==1)
        {
            u=n;
            p=1;
            while(p<=u)
            {
                m=(p+u)/2;
                if(v[m]<=b && v[m+1]>b)
                    {
                        k=m;
                        break;
                    }
                else if(v[m+1]<b)
                    {
                        p=m+1;
                    }
                else
                    u=m-1;
            }
            out<<k<<'\n';
        }
        else
        {
            p=1;
            u=n;
            while(p<=u)
            {
                m=(p+u)/2;
                if(v[m]>=b && v[m-1]<b)
                    {
                        k=m;
                        break;
                    }
                else if(v[m]<b)
                    p=m+1;
                else
                    u=m-1;
            }
            out<<k<<'\n';
        }
    }
    return 0;
}