Cod sursa(job #2334573)

Utilizator adieldinuadieldinu adieldinu Data 2 februarie 2019 18:26:28
Problema Cautare binara Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.79 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;
            if(a[pos]==x) 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=0; 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<<'/n';


    }
return 0;
}