Cod sursa(job #2334536)

Utilizator alex.cristi_26patica alex alex.cristi_26 Data 2 februarie 2019 18:12:45
Problema Cautare binara Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.04 kb
#include <bits/stdc++.h>

using namespace std;
int v[100000];
ifstream in("cautbin.in");
ofstream out("cautbin.out");
int cerinta0(int val)
{
    int pos=0;
    for(int ms=1<<20; msk>0; msk/=2)
        if(pos+msk<=n && v[pos+msk]<=val)
            pos+=msk;
    if(v[pos]==val)
        return pos;
    else return -1;
}
int cerinta1(int val)
{
    int pos=0;
    for(int ms=1<<20; msk>0; msk/=2)
        if(pos+msk<=n && v[pos+msk]<=val)
            pos+=msk;
    if(v[pos]<=val)
        return pos;
}
int cerinta2(int val)
{
    int pos=0;
    for(int ms=1<<20; msk>0; msk/=2)
        if(pos+msk<=n && v[pos+msk]<=val)
            pos+=msk;
    if(v[pos]==val)
        return pos;
    else return -1;
}
int main()
{
    int n,m,i,j,c,x;
    in>>n;
    for(i=1;i<=n;i++)
    {
        in>>v[i];
    }
    in>>m;
    for(j=1;j<=m;j++)
    {
        in>>c>>x;
    }
    if(c==0)
        out<<cerinta0(x);
    else if(c==1)
        out<<cerinta1(x);
    else if(c==2)
        out<<cerinta2(x);

    return 0;
}