Cod sursa(job #2338722)

Utilizator eduardeugennitaEduard Nita eduardeugennita Data 7 februarie 2019 18:58:26
Problema Cautare binara Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.07 kb
#include <iostream>
#include<fstream>
using namespace std;
int main()
{
    ifstream f("cautbin.in");
    ofstream g("cautbin.out");
    int msk;
    int n,v[10000],x,i,a,m;
    int pos=0;
    f>>n;
    for(i=1;i<=n;i++)
    {
        f>>v[i];
    }
    f>>m;
    for(i=0;i<m;i++)
    {
        f>>a;
        f>>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)
            {
                g<<pos;
                g<<"\n";
            }
        else
            {
                g<<-1;
                g<<"\n";
            }
    }
    else if (a==1)
            {
                    g<<pos;
                    g<<"\n";
            }
    else if (a==2)
    {
                while(v[pos]==x)
                {
                       pos--;
                }
                   pos++;
                g<<pos;
                g<<"\n";

            }
    }
    f.close();
    g.close();
    return 0;
}