Cod sursa(job #1961405)

Utilizator ioanavasilescuIoana Vasilescu ioanavasilescu Data 11 aprilie 2017 09:11:00
Problema Cautare binara Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.1 kb
#include <iostream>
#include <fstream>

using namespace std;

int a[100010];

int main()
{
    ifstream fin("cautbin.in");
    ofstream fout("cautbin.out");
    int n,m,i,st,dr,mij,x,cer;
    bool se_muta;
    fin>>n;
    for(i=1;i<=n;i++)
        fin>>a[i];
    fin>>m;
    for(i=1;i<=m;i++)
    {
        fin>>cer>>x;
        st=1;dr=n;
        mij=st+(dr-st)/2;
        while(a[mij]!=x&&st<dr)
        {
            if(x<a[mij])dr=mij-1;
            else st=mij+1;
            mij=st+(dr-st)/2;
        }
        if(!cer)
        if(st>dr)fout<<-1;
        else
        {
            while(a[mij+1]==x)mij++;
            fout<<mij;
        }
        else
            if(cer==1)
            {
                se_muta=0;
                while(a[mij]==x)mij++,se_muta++;
                if(se_muta)mij--;
                fout<<mij;
            }
            else
            {
                se_muta=0;
                while(a[mij]==x)mij--,se_muta++;
                if(se_muta)mij++;
                fout<<mij;
            }
        fout<<"\n";
    }
    return 0;
}