Cod sursa(job #2177234)

Utilizator dianaschneiderSchneider Diana dianaschneider Data 18 martie 2018 13:37:09
Problema Cautare binara Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.03 kb
#include <fstream>
using namespace std;
ifstream in("cautbin.in");
ofstream out("cautbin.out");
int n,poz,m,v[100001],e,c,i,j;
int cautbinar(int s,int d,int x,int v[])
{
    int mij=(s+d)/2;
    if(x<v[mij])
        return cautbinar(s,mij-1,x,v);
    else if(x>v[mij])
        return cautbinar(mij+1,d,x,v);
    else
        return mij;
}
int main()
{
    in>>n;
    for(i=1; i<=n; i++)
        in>>v[i];
    in>>m;
    for(i=1; i<=m; i++)
    {
        in>>c>>e;
        poz=cautbinar(1,n,e,v);
        if(c==0)
        {
            while(v[poz+1]==e)
                poz++;
            if(poz!=0)
                out<<poz<<'\n';
            else
                out<<-1<<'\n';
        }
        else
        if(c==1)
        {
            poz=poz-2;
            while(v[poz+1]<=e)
                poz++;
            out<<poz<<'\n';
        }
        else
        {
            poz=poz+2;
            while(v[poz-1]>=e)
                poz--;
            out<<poz;

        }

    }
    return 0;
}