Cod sursa(job #2334534)

Utilizator anahita2004Anahita anahita2004 Data 2 februarie 2019 18:12:04
Problema Cautare binara Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.86 kb
#include <bits/stdc++.h>

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

}
int main()
{
    int n,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<<cbin(x)<<'\n';
            else
            out<<"-1"<<'\n';
        }
        if(c==1)
        {
            p=cbin(x-1);
                out<<p+1<<'\n';

        }
        if(c==2)
        {
           p=cbin(x-1);
                out<<p<<'\n';
        }
    }

    return 0;
}