Cod sursa(job #2510655)

Utilizator DavidLDavid Lauran DavidL Data 17 decembrie 2019 08:09:38
Problema Cautare binara Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.02 kb
#include <fstream>
using namespace std;
ifstream fi("cautbin.in");
ofstream fo("cautbin.out");
 
int n,X[100001],c,x,m,i,poz;
 
int cautare_binara()
{
    ///cautam pe x in X
    int st=1,dr=n+1,mij;
    while (dr-st>1)
    {
        mij=(st+dr)/2;
        if (x>=X[mij])
            st=mij;
        else
            dr=mij;
    }
    return st;
}
 
int main()
{
    fi>>n;
    for (i=1; i<=n; i++)
        fi>>X[i];
    fi>>m;
    for (i=1; i<=m; i++)
    {
        fi>>c>>x;
        if (c==0)
        {
            poz=cautare_binara();
            if (X[poz]==x)
                fo<<poz<<"\n";
            else
                fo<<-1<<"\n";
        }
        else if (c==1)
        {
            poz=cautare_binara();
            fo<<poz<<"\n";
        }
        else
        {
            x--;
            if (x<X[1])
                poz=1;
            else
                poz=cautare_binara()+1;
            fo<<poz<<"\n";
        }
    }
    fi.close();
    fo.close();
    return 0;
}