Cod sursa(job #2334591)

Utilizator adieldinuadieldinu adieldinu Data 2 februarie 2019 18:33:13
Problema Cautare binara Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.81 kb
#include <bits/stdc++.h>

using namespace std;
ifstream in("cautbin.in");
ofstream out("cautbin.out");
int a[1000001], n;

int cbin(int x)
{
    int pos=0;
            for(int msk=1<<20; msk>0; msk/=2)
                if(pos+msk<=n && a[pos+msk]<=x)
                    pos+=msk;
    return pos;
}

int main()
{
    int x,i,m,k,t;
    in>>n;
    for(i=1; i<=n; i++)
    {
        in>>a[i];
    }
    in>>m;
    for(i=1; i<=m; i++)
    {
        in>>k>>x;

        if(k==0) {
            t=cbin(x);
            if(a[t]==x) out<<t<<'\n';
                else out<<-1<<'\n';
        }

        else if(k==1)
            {t=cbin(x);
            out<<t<<'\n';
            }
        if(k==2)
        {

            t=cbin(x-1);
            out<<t+1<<'\n';
        }

    }
return 0;
}