Cod sursa(job #2427847)

Utilizator RalucaGrigoreGrigore Raluca RalucaGrigore Data 2 iunie 2019 14:20:33
Problema Cautare binara Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.9 kb
#include <bits/stdc++.h>

using namespace std;

ifstream in("cautbin.in");
ofstream out("cautbin.out");
int caut(int n,int x,int v[])
{
    int msk,poz=0;
    for(msk=1<<20;msk>0;msk=msk/2)
        if(poz+msk<=n&&v[poz+msk]<=x)
         poz=poz+msk;

    return poz;
}
int v[100001];
int main()
{
    int n,i,cf,m,x,k=0,nr,p;
    in>>n;
    for(i=1;i<=n;i++)
     in>>v[i];
    in>>nr;
    for(i=1;i<=nr;i++)
    {
        in>>cf;
        if(cf==0)
        {
            in>>x;
            p=caut(n,x,v);
            if(v[p]!=x)
                out<<-1<<'\n';
            else
               out<<p<<'\n';
        }
        if(cf==1)
        {
            in>>x;
            p=caut(n,x,v);
            out<<p<<'\n';

        }

        if(cf==2)
        {
            in>>x;
            p=caut(n,x-1,v);
            out<<p+1<<'\n';

        }
    }

    return 0;
}