Cod sursa(job #1757350)

Utilizator anisca22Ana Baltaretu anisca22 Data 14 septembrie 2016 21:19:26
Problema Cautare binara Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.87 kb
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin("cautbin.in");
ofstream fout("cautbin.out");
long long a[110000],rsp[110000],intb,nr;
int m,n,l,r,mij;
int main()
{

    fin>>n;
    for(int i=1;i<=n;i++)
        fin>>a[i];
    fin>>m;
    for(int i=1;i<=m;i++)
        {
            fin>>intb>>nr;
            if(intb==0)
            {
                l=1;
                r=n;
                while(l<=r)
                {
                    mij=(l+r)/2;
                    if(mij<=nr)
                        l=mij+1;
                    else r=mij-1;

                }
                mij=(l+r)/2;
                if(a[mij]>nr)
                    mij--;
                if(a[mij]==nr)
                    rsp[i]=mij;
                else rsp[i]=-1;

            }
            else if(intb==1)
            {
                l=1;
                r=n;
                while(l<r)
                {
                    mij=(l+r)/2;
                    if(mij<=nr)
                        l=mij+1;
                    else if(mij>nr)
                        r=mij;

                }
                mij=(l+r)/2;
                if(a[mij]>nr)
                    mij--;
                if(a[mij]==nr)
                    rsp[i]=mij;

            }
            else if(intb==2)
            {
                l=1;
                r=n;

                while(l<r)
                {
                    mij=(l+r)/2;
                    if(mij<nr)
                        l=mij+1;
                    else if(mij>=nr)
                        r=mij;
                }
                mij=(l+r)/2;
                if(a[mij]<nr)
                    mij++;
                if(a[mij]==nr)
                    rsp[i]=mij;
            }

        }
    for(int i=1;i<=m;i++)
        fout<<rsp[i]<<"\n";
    return 0;
}