Cod sursa(job #2342928)

Utilizator MocanuAndrei0903Mocanu Andrei MocanuAndrei0903 Data 13 februarie 2019 15:39:14
Problema Cautare binara Scor 20
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.84 kb
#include <bits/stdc++.h>

using namespace std;
ifstream in("cautbin.in");
ofstream out("cautbin.out");
int v[100000001], n;
int cbin(int val)
{
    int pos=0;
    for(int msk=1<<20;msk>0;msk/=2)
        if(pos+msk<=n && v[pos + msk] <= val)
            pos+=msk;
        return pos;
}

int main()
{
    int m, i, x, c, p;
    in>>n;
    for(i=1; i<=n; i++)
    {
        in>>v[i];
    }
    in>>m;
    for(i=1; i<=m; i++)
    {
        in>>c>>x;
        if(c==0)
        {
            p=cbin(x);
            if(v[p]==x)
                out<<p<<'\n' ;
            else
                out<<"-1"<<'\n';
        }
        if(c==1)
        {
            p=cbin(x-1);
            out<<p<<'\n';
        }
        if(c==2)
        {
            p=cbin(x-1);
            out<<p+1<<'\n';
        }
    }


    return 0;
}