Cod sursa(job #2338730)

Utilizator eduardeugennitaEduard Nita eduardeugennita Data 7 februarie 2019 19:10:43
Problema Cautare binara Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.99 kb
#include <iostream>
using namespace std;
int main()
{
    int msk;
    int n,v[10000],x,i,a,m;
    int pos=0;
    cin>>n;
    for(i=1;i<=n;i++)
    {
        cin>>v[i];
    }
    cin>>m;
    for(i=0;i<m;i++)
    {
        cin>>a;
        cin>>x;
        for(msk=1<<20;msk>0;msk/=2)
    {
        if((pos+msk<=n)&&(v[pos+msk]<=x))
        {
            pos+=msk;

        }

    }
    if(a==0)
    {

        if(v[pos]==x)
            {
                cout<<pos;
                cout<<"\n";
            }
        else
            {
                cout<<-1;
                cout<<"\n";
            }
    }
    else if (a==1)
            {
                    cout<<pos;
                    cout<<"\n";
            }
    else if (a==2)
    {
                while(v[pos]==x)
                {
                       pos--;
                }
                   pos++;
                cout<<pos;
                cout<<"\n";

            }
    }
    return 0;
}